Simplify and untangle SoundSource

Some preparations before introducing the new API.

Eliminated the inheritance relationship between SoundSourceProxy and SoundSource:
- It's not necessary and was only partially implemented..
- SoundSourceProxy might be renamed eventually to better reflect its purpose.

Removed TagLib dependencies from the SoundSource base class:
- There is no reason why these functions were provided by the base class.
- Outsourced into standalone utility functions that access SoundSource through its public interface.
Check for null SoundSourcePointer