Initial finite state machine addition for the library.

A FSM has a number of states and a number of transitions.  It also has the concept of the current state.  During operation the run method in the current state is repeated executed and the pre-conditions for the relevant transitions checked.  If a transition is activated, the FSM changes to the new state.

Transition pre-conditions are be:

* a function;
* statuses;
* IO values and
* setpoint activations.