MultiFSM now works even with malformed button sets

The input sequence is first converted into a proper set.
Improved compilation time of MultiFSM & SequenceFSM

Moved several typedefs from individual states to the machines.
Renamed SingleButtonTracker to ButtonFSM

More consistent with ButtonFSM and SequenceFSM