Multi-container synchronization for starting agents implemented

Containers with async earlier, and this could cause non-deterministic behaviors in discrete event simulation with multiple containers
Now fixed by having all containers initialize, before each is started
Also fixed test cases that were starting containers without starting platform
Random number generation support with global seed added to allow repeatable discrete event simulations

Poisson behavior updated to use this random number generation support
Minor change to exception message
Bugfix: AgentID is made immutable to avoid shared AgentID owners being changed by other agents
GroovyAgentExtensions renamed to GroovyExtensions, and reimplemented using metaClass rather than mixins

This allows more flexibility in adding methods to different classes rather than a single Agent class
Also added addXXXBehavior methods for convenience
Enabled GroovyExtensions globally whenever GroovyBoot is used
Bugfix: Occasional null pointer exception when an agent is killed, due to synchronization issue
Documentation update