Added the interface for the asynchronous state machine

The asynchronous state machine allows events to be fired, submitted, and
injected.  This allows for asynchronous handling of events.
Added the base implementation of an asynchronous state machine
Reverting state and context parameter order
Created the asynchronous state machine factory
Added the async state and state machine builders
Access to the async action executor should be limited

Only the asynchronous action factory should have access to the executor
used to run all the asynchronous actions.  It might be useful for
something outside the factory to shutdown the executor but that is
outside the current scope.
Async state machine JUnit test
Merge pull request #60 from bnorm-software/event_submit

Asynchronous State Machine