Support for event triggered transitions

implements #31 and #56 , similar functionality to aasm
I think it would make sense to extract this to a separate file with its own specs