Implements simple finite state machine. FSM abstracts a list of states. Each state has an entry and exit action + activity routine