Made Dispatcher.dispatch() take and pass args/kwargs for more re-usability.
Moved RequiresStateException to FSM for re-use wherever its needed