Add zero-initialization constructors to structs in midimessage.h.
Refactor MIDI learning to support learning select knobs, jog wheels, etc.

* Learn mappings over multiple MIDI messages instead of just one.
* Allow the user to enable MIDI options from the GUI -- currently supports
  soft-takeover, invert, select-knob (two's complement), and switch mode.
* Add Undo option for reverting the most recently learned mapping.
* Introduce LearningUtils, a class that recognizes mappings from message
  streams.
* LearningUtils has a test suite for each mapping type we want to recognize.

If we don't recognize a mapping then we fall back on the 1.11.0 behavior of
mapping the first message in the stream.

This paves the way for learning 14-bit CC and pitch bend controls and
providing richer user feedback about what we thought the control was or why we
couldn't learn it.