Transitions should have guards

The Transition.allowed() method has been refactored into a
TransitionGuard interface that also requires that the state machine
context be provided.  This allows the transition guard to be based off
of the current state machine context.
Merge pull request #35 from bnorm-software/transition_guard

Transitions should have guards