The audio_file classes (wav, ogg, opus) represent audio files.

- audio_file is an abstract base class that holds the audio data and info.

- each derived class loads the data in its constructor.

- currently the old code is used for the loading.
Audio file factory

The audio_file_factory class has one static method that returns a
std::unique_ptr<audio> that points to a wav_file, ogg_file or
opus file depending on the extension of the provided filename.
Changed the name of bit_depth to byte_depth

The name was changed because bit_depth was inaccurate.
The value is the actual bytes.
Audio file returns const pointer

Changed the void pointer that is returned by audio_file.get_audio_data()
to const void.
Remove MusicSound

Since the file system does not support partially loading a file
MusicSound does not have any uses. Its functionality is now
part of LoopingSound.
Remove the audio_file hierarchy

Removed the audio_file (and {wav,ogg,opus}_file} in favor of a simpler
AudioData struct, which contains the relevant audio data. Reduce the
audio_file_factory to functions that return AudioData objects.
Update CMakeLists.txt
AudioData now deletes any memory it owns.

If rawSamples* is owned by an AudioData object, it will be deleted
during destruction, this is the case for loaded audio files.

Also, a few ugly casts were removed.
Add comparison operator to AudioData
Implement the new wav loader.

WavCodec uses engine/framework/Filesystem to read the audio files.

All the relevant data is returned in a AudioData struct.

In case of an error an empty AudioData is returned.
Fix a bug in WavCodec.cpp

Before the fix it was assumed that the data chunk immediately
follows the fmt chunk but this is not always the case.
Implement the new ogg loader.

OggCodec uses engine/framework/Filesystem to read the audio files.

vorbisfile is used to decode the audio data.

All the relevant data is return in a AudioData struct.

In case of an error an empty AudioData is returned.
Implement the new Opus loader.

OpusCodec uses engine/framework/Filesystem to read the audio files.

opusfile is used to decode the audio data.

All the relevant data is returned in a AudioData struct.

In case of an error an empty AudioData is returned.
Remove snd_codec*

The old sound codec loader are removed.
CodecFactory and {Wav,Ogg,Opus}Loader
are used in their place
Change the license

Change the license from Theodoros Theodoridis to Daemon Developers.

Also, remove a few blank lines.
Remove an unnecessary check.

The size of the audioData was checked twice.
Remove the comparison operator in AudioData

The comparison operator wasn't used anywhere, and existed
only for testing purposes.
Transfer data ownership to AudioData

Previously it was not always the case that AudioData owned the
memory of its data field. This was only needed for clients of
Audio::StreamData. They now relinquish any memory they pass to
Audio::StreamData.
Rename CodecFactory and merge the codec headers.

CodecFactory is renamed to SoundCodec.

All the headers relevant to codecs are merged into SoundCodec.h
Remove a line break in OggCodec for readability.