Compensation (built on the temp branch)

I've added documentation to all of the commits. Please see the commit messages. 

At the moment, simple compensation works: that is to say, the simple use case involving a boundary event handler and an associated compensation activity. 

I'm almost done with compensation event sub processes, except that they basically rely on nested event sub processes working, which isn't the case. I've added a test to test this. 

The problem for nested event sub processes seems to be that registering the (external) event listeners doesn't work/isn't happening, because it doesn't recursively search through the nodes, the way the rest of the logic involving the event sub processes does (NodeContainerImpl.getInnerNode(), for example). 

I'm pretty sure that CompositeNodeInstance.registerExternalEventNodeListeners is what needs to be modified so that it's recursive.