Merge integrated tracks into existing, possibly hand-edited tracks, using
the index of the previous integration to figure out which edits were made.

This proceeds in two steps: first the tracks are matched up. This takes
advantage of the two-level (note, controls) hierarchy emitted by
Cmd.Integrate.Convert, since each control track is uniquely identified by
its title, it's safe to just match them up by title.

However, there's no key to match up the note tracks themselves, so it's
done purely based on the order of the tracks. So if the integrate source
emits more simultaneous notes and Convert puts them on appended tracks all
will be well, but if it prepends a new track then the later tracks won't
line up with the index. This will result in bogus diffs, or just events
not being found at all and being considered hand-added.

TODO I'll have to see from experience if this is a problem, and if so, how
it can be fixed.

Once tracks are matched, the events are diffed based on the
Event.IndexKey.

Given a set of source Convert.Tracks and a set of previously integrated
destination tracks, merge them together and give new destination tracks.
A single integrating source track can create multiple Convert.Tracks, and
an integrating track can have >=1 destinations, so this is called once per
(source, destination) pair.