MPI Synchronous send mode

This pull request provides access to MPI's synchronous send modes.  Such sends will not complete until a matching receive has posted, and hence can be used to ensure a remote rank has reached a specific location in the program.  The default send may buffer and complete with no such guarantee.

Usage is trivial:

```c++
this->comm().send_mode(Parallel::Communicator::SYNCHRONOUS);
this->comm().send(...);
...
this->comm().send_mode(Parallel::Communicator::DEFAULT);
```

Also extend unit test coverage to test both modes.