Commit a321aa76d556a618a09abb3adeb7473a6c099304 added "|| timeline instanceof EventTimeline" to `computeHold`, so event timelines always use FIRST, never HOLD. This changed the timing slightly and broke the test, but the new timing is better.
Also:
- Added mixingTo to make track entries a doubly linked list, removing the need for the mixingTo array.
- Renamed dip->hold, timelineData->timelineMode, timelineDipMix->timelineHoldMix ("dip" naming was bad).
The multiple mixing setting has been removed. Multiple mixing is always done and dipping is avoided for adjacent track entries.
This is pretty close to complete. Mixing `a -> b` where both key property `x` avoids dipping. If the mix is interrupted by `c`, the dipping is properly mixed out. However, if `c` *also* keys `x`, a dip is seen.
This is good test JSON data:
http://n4te.com/x/1948-6b1G.txt
The problem can be seen by doing `m1 -> m1-dup` then interrupting the mix with `m1`.
Related issues: #621, #815, #899, #900