Make timing code in sequencer/midiplayer.py more robust
Make timing code in sequencer/midiplayer.py more robust

Event timing previously worked by sleeping between events. Something like:

    sleepTime = ticksToSeconds(nextEventTick - currentTick)
    sleep(sleepTime)
    dispatch next event
    currentTick = nextEventTick

Using this technique, the tempo drifts from the desired tempo. This
was audible in some cases. For example, when several control change
events were dispached only one or two ticks apart the playback would
noticibly slow down.

This commit updates the sequencer to dispatch events based on time
instead of tick and updates the timing code to compute current time
based on elapsed wall clock time instead of keeping a running total.

aschmied/keyzer