#2382 use asynchronous communication in `NodeBasedCellPopulation::RefreshHaloCells` so we can calculate local node pairs while the MPI layer is doing communication. Had to make a number of members in `ObjectCommunicator` to make sure that send / recieve buffers don't go out scope when a non-blocking method returns.

git-svn-id: https://chaste.cs.ox.ac.uk/svn/chaste/trunk@18855 b5f69653-2bf5-0310-8201-b0dafb8e1405