Develop MPI CUDA P3M Implementation

*   Add master.py and slave.py for rank 0 and all others, respectively

    -   slave.py is mostly a rename of simulation

*   Add `open_galaxy` and `cleanup` function to nbody module for slave
    processes to load galaxy data and to remove the tempory files created
    by the process

*   update run.py to entry the correct (master|slave) main function per MPI
    rank

*   add rdb.py for interactive debugging of master process
Update param documentation

*   The current wording is confusing and misleading becuase it doesn't give
    any information to the user as to why, for example, 16 is given and 64
    is returned
Refactor/Bugfix: grid sub-divide

*   cuMalloc errors raised when attempting the particle mesh step (end) of
    the sub-divide

    -   Caused by a lot of missing information and wrong variables
Merge branch 'master' into dev_mpi_cuda

*   Pick up sub-divide bug fix
refactor: send flat numpy array of grid members

*   using the `extend` method instead of `append` allows us to create a
    flat list of indexes for the nodes

*   updating the master node assignment to send the length of each
    assignment and then the actual assignment should allow us to use the
    buffering mechanism of `mpi4py` instead of using Python's pickling thus
    increasing the transfer rate (?) or time to actually transfer data