Completely new implementation of agent/container/behavior synchronization

The new implementation uses a simpler mechanism to keep behavior management in a single agent thread
using a number of behavior queues and sets
Bugfix: DiscreteEventSimulator would leave a running thread if shutdown() was explicitly called to terminate the simulation

Now the thread is not started until start() is called, and is killed when shutdown() is called
Improvements for deterministic behavior -- but still small amount of indeterminism remains

Agents are now started in a deterministic order
Events are triggered in a deterministic order
Improved use of Java collection classes for performance
Minor cleanup
Bugfix: Deadlock at high load fixed
Fixed problem with exclamation marks in readline used for event expansion (disabled this now)
Updated all behaviors to be constructed using Runnable closures [WIP: delegation strategy is incorrect, now all behaviors support this yet]
Version number updated to 1.2-SNAPSHOT
Build file updated to make task 'jars' always run
Dramatically changed Groovy extension syntax for creating behaviors from closures
Documentation updates
Version number updated to 1.2
Backoff behavior introduced
Minor cleanup -- the sleep for ConsoleShell no longer seems to be necessary
GroovyExtensions now allow any numeric input (used to require a long) as first parameter for timed behaviors
Added stop() method for CyclicBehavior
Removed ExpandoMetaClass.enableGlobally() for improved performance, since metaclass inheritance is not required in GroovyExtensions at present
Added caching of loggers during boot to avoid garbage collection, and consequent loss of logging settings
Reversed ConsoleShell sleep removal from commit 08d5b85 -- it is needed, for some strange cosmetic reasons!
Preliminary version of telnet using jline for command editing

Still a few things to fix:
- Initially there is some TELNET negotiation garbage in the buffer
- No script interrupt handling [ESC or ^C]
- Pressing ESC puts the terminal in an odd mode
- ScriptOutputStream does CR LF translation, which need not be done for ConsoleShell