Support for real MPI unit tests
Add support for unit tests where the same test code can be run under
both MPI and thread-MPI with a specified number of ranks.
Currently, all tests within the same binary should use the same number
of ranks.
Some C++11 magic is used to get a function pointer to the current test
body, but it seems to work with all the compilers in Jenkins.
Without it, the implementation would either be much more complicated, or
would require a specific fixture type for these tests.
Change-Id: I2957c4cc17cae85bfa2ecf36624160257a17cae3