Handle MPI Init and Finalize cleanly
Since object containing a communicator can't be destroyed cleanly if the MPI_Comm_free is called in the destructor, it would be better to encapsulate it into a class that conditionaly call MPI_Init and MPI_Finalize. This would not change the GRF API since passing the communicator to the GRF/fft_api constructor would implicitly call this new class constructor (unless we add explicit to the GRF/fft_api constructors).