feat(fsm): Add finite state machines for components

A port of fsm of ash framework to ashley
Merge remote-tracking branch 'origin/fsm' into fsm