java 8 state machine loosely inspired from stateless4j and adding a new dsl and extra features (actions on transition, timeout, ...)