added waveOut functions which allow for more powerful sound playing functionality.

This commit adds 5 waveOut functions and 3 structs for their use.  These functions are to be used together to produce audio output.  In the examples file you can find some example code of playing arbitrary PCM data which is written to a buffer and sent directly to the audio device.  This commit also adds some tests.