Ruby state machine micro library