Fix memory corruption for waveforms larger than 4096^2.

Potentially fixes Bug #1383404.
Fix waveform concurrency issues. Potentially fixes Bug #1383404.

* Use const shared pointers for waveforms.
* Move all std::vector sizing operations to the Waveform constructor. No
  vector state is allowed to change after the constructor finishes.
* Clarify comments.
* Remove waveform mutex usage in WOverview variants.
* Use the track's waveform pointer to atomically swap the waveform
  rather than mutating the waveform in place.
* Remove unused code.
Replace bit-twiddling hacks with a portable solution.
Handle non-existent next-higher-power-of-2 in FIFO "gracefully".
Ugh.
Disable drops to WSearchLineEdit. Bug #1398938.
Revert a change I made to TimerEvent handling in ControllerEngine.

Add a note about this change causing segfaults while scratching.
Review comments.
More review comments.
Merge pull request #420 from rryan/waveform

Fix waveform concurrency issues. Possible fix for Bug #1383404
Add stub implementation for SoundSourceFFMPEG::parseCoverArt().
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
Avoid temporary buffering in M4A decoder
Slightly simplify the analysis of tracks