General cleanup + random access read

- General cleanup to bring code structure closer to UPC++ version
- Added new random access read operator() backed by MPI_Get, similar to
  the one in the UPC++ version
Renamed cm_mpi.hpp -> convergent_matrix_mpi.hpp
Updated README
General cleanup; Window creation via MPI_Win_allocate

- Additional rounds of cleanup in convergent_matrix_mpi.hpp;
- Added *optional* (to enable: -DUSE_MPI_WIN_ALLOCATE) RMA window
  creation via MPI_Win_allocate. This can potentially enable RMA-optimal
  memory allocation, although in theory so does MPI_Alloc_mem which is
  the default. It has yet to be confirmed / quantified whether this is
  really the case (i.e. both enable similar performance).