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.
clarifying comment
notes
Better support for SVG slider handles.

* Scale WSliderComposed handle to the width or height of the widget.
* Update Deere slider handles to look more like classic Deere -- still
  missing the dropshadow.

Raster handles are usually custom-built to be the same width/height as
the slider so this should not affect most existing skins.
Add slider backgrounds modeled after classic Deere.
Merge pull request #423 from rryan/slider

Better support for SVG slider handles.
Merge pull request #419 from ywwg/mastersync-remove-filebpm

BeatMap: Fix bpm and sync behavior with beatmaps.
Disable log spam for the (common) case of no beatgrid with quantize enabled.
Merge branch 'master' into columns-reset-to-default
Make sure to clear out all header states
Make most models inherit the default hidden-column settings.
Make column name / widths easy to set up.
better comment