Some minor SoundSource fixes

Some minor fixes and cleanups.

SoundSource actually needs a complete re-design:
- Clear separation between audio and other metadata -> AudioSource
- Setters/getters for metadata in SoundSource do not need to be virtual
- TagLib dependencies could be removed from the header file of the base class
- SoundSourceProxy IS NOT a SoundSource, but rather a factory that creates SoundSource objects
- Clear distinction between "frames" and "samples" when reading audio data
- The code in the subclasses of SoundSource is even worse with lots of unnecessary cruft
Style neat pick: total_bytes_decoded / 2