Time-step limiter and time-step synchronization over MPI
Hopefully final batch of changes for the physics required by EAGLE. The main change is to allow users to run with the time-step limiter and synchronization over MPI.
This is done by running the limiter and synchronization tasks as part of the regular task graph. We then run all the hydro and gravity time-step communication tasks in order to make sure every cell that may have seen its time-step change whilst having been inactive has communicated that change to all the relevant parties. (I hope to optimize this at a later stage and reduce the number of comms required)
Other changes include:
- Fixes a few of the debugging checks that were incorrect when running over MPI
- Fix the start of time-step of the cells in which a particle is limited (was wrong also in non-MPI)
- Fix the time-bin of a synch'd particle to be not larger than the current max (was wrong also in non-MPI)
- Deactivate the (small) optimization in DOPAIR2() where we saved a bit of memory when all the particles were active since we do not explicitly track that information any more.