Parallel::gather_packed_range() implementation
implement MeshCommunication::gather(), and refactor allgather() to use it.