Messaging reimplementation

This is a rewrite of the inter-agent communication to fix compatability with the 0.4.x API changes, and to properly pass messages through the environment state. There are also some side-effect changes to the simulation loop to simplify caching at the environment service level.

 * New schedule function group, 'PreStep', which executes before 'Step' functions.
 * Reorganisation of RunnableSimulation to make test instrumentation easier. `initialise` and `step` are now public so you can step through simulations in test.
 * Network has moved into the util module.
 * BasicNetworkConnector as a participant environment service for inter-agent communication (using the old NetworkAdaptor interface).
 * MessageHandler as an ActionHandler for message actions, and a global environment service for determining when messages can be sent and who is connected to who.
 * NetworkModule provides Guice bindings for the above.
 * NetworkRangeConstraint as an implementation of a network constraint, as in the previous implementation.
 * Includes integration tests and messaging within a mock simulation.

Remaining issues are:

 * Protcols need to be updated to new interface locations and tested with the new implementation.