allow chained set
Big refactor. Allows conditional transitions AND simplified code
(onEvent replaces onEntry and onExit)