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
Put audio device check last in the startup flow.
LateNight: Implement SizeAwareStack for lower half of UI.

Now the effects rack, samplers, and library will appear and disappear depending on the
size of the window.  Each state needs its own COs, so there is some
odd jumping around as the window size changes.  But most users don't
spend a lot of time resizing the window so it's not a dealbreaker.

TODO: need to hide the "effects" and "samplers" buttons when Big Library
mode is engaged
Tracks specified on the command line need to be processed after we know
we have a working sound card.
Merge pull request #421 from ywwg/skincheck-first

Put audio device check last in the startup flow.
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.
LateNight: Move buttons around so that they don't move when they are clicked.
Fix math error in source rectangle for horizontal VU meter peaks.
Delete obsolete include directives
New SoundSource/AudioSource API

This is the first step towards a better/cleaner SoundSource API.
The operations for reading audio data have been moved into the
new abstract base class AudioSource.

Currently SoundSource inherits from AudioSource for technical reasons.
This is too much much coupling that needs to be broken up. I have
already some ideas on how to resolve it, but first this work needs to
be integrated.

During the refactoring I've noticed, that the quality and maturity of the
audio decoders for different file types greatly varies:

Good/mature:
- FLAC
- Ogg
- Opus
- WavPack
- libsndfile

Mediocre:
- MP3

Ugly/inefficient:
- M4A
- ModPlug

Untested AudioSource API:
- Apple CoreAudio
- Windows Media Foundation

Unfinished AudioSource API (just a hack):
- FFmpeg

Especially the code for the M4A decoder should be revised and cleaned up as
soon as possible, followed by a review of the MP3 decoder. Reading audio
data must work as stable and efficient as possible. This has priority over
the improvement of the internal software architecture!
Rewrite of the M4A decoder without legacy code
Slightly simplify the analysis of tracks
Initial cleanup of SoundSourceMp3 code