SoundSystem: HUGE changes in SoundHandler interface

It's all a mess right now, don't even *think* about compilation.
Everything is neatly documented in the header though, with TODOs and
full-length method descriptions. Now we have to implement all that.

BTW, I decided to follow Agu's suggestion and make the SoundManager generate
the unique ID of its EnvSounds. This would happen everytime the SoundHandler
invokes playEnvSound().
The SingleSound and Playlist structs have fields to store that unique ID,
which shall be passed to the SoundManager every time the playback state
of the sound is to be modified.
If the sound is stopped, the ID goes stale and the corresponding field in
the SingleSound/Playlist struct will take a negative value.