BeatMap: Fix bpm and sync behavior with beatmaps.

YOUR BPM INDICATOR IS LYING TO YOU.  Since a beatmap
doesn't have a constant bpm, using the "file_bpm" value
for sync and slider display is misleading.  This commit introduces
a new ControlObject, "local_bpm", which represents the average
bpm value around the closest 8 beat span.  It's still a fairly
noisy value, so it may require tuning.  This local_bpm
value is used to display the visual_bpm, so now you can
watch the bpm of your crazy track change over time.  Also it's
used for master sync, so you can watch the pitch slider
of your track wobble around as it tries to stay in sync.

TESTED=existing tests pass, and some new tests for the bpm averaging function.
Yes, this can happen, although actually what would happen is the breaking track would speed up to chipmunk mode.   I strongly believe it's not the responsibility of master sync to second-guess the beatgrid.  The beatgrid needs to have reliable data.  RJ and I talked about this in person recently, we will be thinking about a solution.   I don't think there's an easy fix for this situation for 1.12