Type safety change

The Entity & Event types in the FSM contains some payload and a lot of functionality relies on being able to match that type.

The Entity type needs to be consistent for a given FSM as it flows through all the states. Event on the other hand is more flexible and needs to be tied just to a transition.