Midas state gesture overlap

This is a more complete version of midasState, therefore it should be pulled instead.
It seems to me that the sequences can be treated in a more generic way. This is less of a 'something that should be changed now' and more of a suggestion for the future.

The basic operation of each of the sequences is the same:
1. If I am currently in a mode that listens for this sequence then:
    2. Listen to the gestures that are coming in.
    3. If the sequence of gestures have come in (and the timeout hasn't been exceeded) that I am expecting, then activate the action associated with the completion of the sequence (in this case, a change of state). 

I think that based on that high-level description, we could treat all of the sequences the same without having to split into cases. So we have an active state that determines when to listen for the sequence and an action that occurs when the sequence has been observed. Then they can all be treated the same (going through the active sequences and checking to see if the observed sequence of gestures matches any of them, then activating the associated action).