Change sound buffer to hold signed integers

The buffer should hold signed integers and not unsigned ones in order
for multiplication to work properly.
Add volume param to combineSounds function

This param allows for a global volume to affect the sound volumes.  If
it is 1, then no multiplication will occur.
Add global sound volume control to SoundMixer

The volume of SoundMixer will update all of the sounds volumes real
time.  This may end up being to processor heavy, in which case we can
initialize sounds with the global volume in mind...or we can pre-load
sounds into the SoundMixer buffer.
Add setting of volumes for individual sounds

I've added a static volume change, which will rewrite all of the sound
buffer so that the volume multiplication doesn't need to happen whenever
the sound is read from memory.

I've also added a dynamic volume change, which allows the sound to
maintain it's original wave form so that the sound volume can be brought
all the way to 0 and then back to 1 without losing any data.  This takes
up more processing, but is the expected behaviour.
Use sound volume variable instead of new variable in SoundMixer struct

Before the SoundMixer was holding on to a global volume.  It's simpler
and easier to understand if the global sound struct uses its own volume
variable.
Remove volume from function call

The combineSounds function no longer expects the volume as a param.
Add a setSongVolume function

This function should be called to change the volume of a sound.
Add resumeSound function to Sound header
Set Sound volume when initialized

This was causing issues with the SoundMixer because the volume is never
set if only initSound is called.