Add new header files to Global.h
Add audio ISR to ISR_vectors

This is a slightly modified ISR from module 1.
Add sound functions to Song

The Song struct now holds onto a sound.  The sound can be managed using
the Song functions.
Add an AudioDeviceController

This controller initializes the alt_up_audio_dev, handles the av config
setup, and registers the audio ISR.
Add a Sound struct to hold the raw sound data

The Sound struct holds the raw sound data and allows playing, pausing,
looping, and eventually more effects to be added to a specific sound.
Add a SoundMixer class

The SoundMixer handles the reading of the currently playing sounds.  It
checks to see which songs from the database are playing, and combines
these sounds together.  The Mixer allows for global sound management and
effects on multiple sounds.
<Android> Playlist Activity Checkpoint

Very basic implementation of a playlist. Right now it doesn't use the
Communications class at all.
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.
Add seekSound functions

The seekSound functions take a position in milliseconds and will seek the sound to that position.
Clip and Mix class with some basic functions
Merge branch 'master' of https://github.com/Ilikecattle/EECE381Module2
<DE2>Integrate Adam's audio control