Improvements to audio streaming.

The SoundStreamer interface has changed so that it does data allocation
internally. The main benefit to this is that is allows streamers to use
mapped files which means for uncompressed formats (i.e. wave files) can
reference the mapped pointer directly and thus avoid doing any memory
allocation at all (let's the OS do it instead).

A result of this change is that the wave streamer no longer requires 3
data copies from the point of file loading to playback. Now it just takes
2 copies (once internally from the OS, and again when sending it to the
audio engine).

The next commits will be adding support for Vorbis files.