StateMachine testing.  Need to reconsider the idea of exiting a state
when submachine states are present.  It either needs to consider when
the new state (if any) is the same state, yet it can't prevent
descendants from being exited if they change.  A potentially better
solution to investigate is whether transition() could/should call
exitState() more judiciously.