Extend FSM macro a little

 - Allow a default state for each state transition
 - Allow specifying of the functions to check the current state
   and advancing