Add group to synth node
Replace guts:

* Huge horrible gut-wrenching commit - there *will* be bugs in here somewhere...
* Replace event system with previously experimented non-atom implementation
* Implement new async versions of event and add_handler to increase concurrency
* Move to id-specific note event-lifecycle events /n_end/56 to reduce work checking all /n_end handlers
* Pull out job life-cycle events to new LifeCycleHook object
* Store group subnodes in Group object
* Store containing group in synth node objects
* stop using outer t within t = Thread.new do blocks as it may not be set yet?
* let on_completed life hook only be called from job-start, not in stop

Hopefully this proves to be a better foundation for improving performance on the RP.