Push a new state onto the stack and activate it.
Calls onExit() on the outgoing top (if any) and onEnter() on the new state.