Renamed Result.ASYNC to Result.PENDING to avoid confusion with existing ASYNC constant (that is used to request an asynchronous transition)
[issue #28] - Added generalized callbacks for intercepting all events and state transitions (instead of having a callback per-event/state)

 * onbeforeevent
 * onleavestate
 * onenterstate
 * onafterevent

E.g.

 * `onbeforeevent` is called for every event, while `onbeforeGO`   is only called before the GO event.
 * `onleavestate`  is called for every state, while `onleaveRED`   is only called when leaving the RED state.
 * `onenterstate`  is called for every state, while `onenterGREEN` is only called when entering the GREEN state.
 * `onafterevent`  is called for every event, while `onafterGO`    is only called after the GO event.

NOTE: deprecated the legacy `onchangestate` callback (its the same as `onenterstate`)