Added listener for state transition events
Added base exception for all state machine exceptions
Created state machine interface