ao/wasapi: tidy up better on failure

Before, failures, particularly in the thread loop init, could lead to a
bad state for the duration of mpvs execution. Make sure that
everything that was initialized gets properly and safely
uninitialized.
ao/wasapi: new wasapi device monitoring interface

Implement skeleton IMMNotificationClient to watch for changes in the
sound device.  This will make recovery possible from changes shared
mode sample rate, bit depth, "enhancements"/effects and even graceful
device removal.

http://msdn.microsoft.com/en-us/library/windows/desktop/dd371417%28v=vs.85%29.aspx

Signed-off-by: Kevin Mitchell <kevmitch@gmail.com>
ao/wasapi: add guid and pkey convenience functions
ao/wasapi: request reset when device changes format

on changes to PKEY_AudioEngine_DeviceFormat or device change/removal
call ao_reload directly in the change_notify "methods"
ao/wasapi: add retry loop on AUDCLNT_E_DEVICE_IN_USE

this works around reinitializing too fast on device property changes