Implemented base state machine context interface

The Context interface is a blank interface that provides a base for all
state machine contexts.  It was created so type inferences could be
limited to those that extent the context interface.
Updated the entire state machine framework to include a context

This is a very large update to make it so that every state machine now
requires a context.  The context could very well be null and not used
but it is required to be specified.  By leaving the specification up to
the user, the decision of using a null is then left up to the user and
not the framework.
Merge branch 'master' into context

Conflicts:
	src/main/java/com/bnorm/fsm4j/StateBuilder.java
Merge pull request #18 from bnormsoftware/context

Allow state machines to have a context