Simplification of the FSM interface and implementation. Better
responsibility distribution.
Simplified state machine context. Also renamed class and interface,
because they are not related to concurrency directly.
Added check for context in error state. Client should handle this error
state and avoids restarting threads.