Add optional support for FSM context

Context - is an object, which states, transitions, conditions and actions are described by FSM.
In my project there are 2 points:
* conditions rely on context data (can we fly? yes, if context airplane has enough fuel)
* actions rely on context data (begin flight - inject fuel into context's airplane engine)

This way I made dependency injection to give access to state machine's context for conditions and actions.
Also I made new assertions.
Also method Transition::process was fixed (see actual commit message for details)