Mpi redistribute
Clean up the redistribute code to avoid excessive memory use and work around an issue in Intel MPI that stops packets larger than 4Gb from being used over Mellanox infiniband (actually that is dapl).
Memory use is reduced by separating the particle types into different sends (so we don't have the overhead of a new copy of parts, xparts, gparts and sparts all at the same time).