Added a before transition event and the ability to stop listening

Added a before transition event.

Use case: Set fields on a Batman.Model before it enters the saving state. If we were to use onTransition the state machine has already changed and the set would only happen once the saving is complete.

Also added offEnter, offExit, offTransition, offBefore methods to make use of Batman's event emitters new off method.

@hornairs @matthelm for review