Modifications to the sound system, added new Looper interface

Looper objects help the SoundStreamer know when to stop streaming, and
notifies the Looper when the streaming is finished.