Divides the communication policy API into core and extended API
Core API are methods that are required by hard (point to point communication)
Extended API are methods which can be emulated by core API methods, but
can also be provided in optimized variants e.g. MPI collectives
A communication policy which only implements the core API can inherit a emulated
extended api from graybat::communicationPolicy::Base<CommunicationPolicy>
This PR:
graybat::communicationPolicy::Base<CommunicationPolicy>