Support for event triggered transitions

implements #31 and #56 , similar functionality to aasm
This example wouldn't work, it needs a model instance to be passed in at least.