create new pixelsToMm() and mmToPixels()
totally revamp synchronization algorithm for significant improvement

We now take a radically different approach to synchronization:
rather than brittle heuristics in ly2video, we tweak the .ly source
so that LilyPond gives us all the data we need for synchronization.
For each grob, it outputs paper positions, timing, and origin within
the source file.  Then for each moment in which one or more grobs
occur, the leftmost grob is used to determine the position at which
the video frame will be focused during that moment.

This is far more robust, so we no longer require special handling
for ties, grace notes, chord names, chords which have note heads
on either side of the stem, etc.