ao/wasapi: get rid of WAVEFMT union

It only confused the issue. Replace it's functionality with
waveformat_copy function where needed.
ao/wasapi: make sure that < 16-bit pcm never happens

it just sucks. noone should have to listen to that.
ao/format: add af_fmt_is_float
ao/wasapi: don't assume 32-bits == float

This was based on old WAVEFORMATEX restrictions
http://msdn.microsoft.com/en-us/library/windows/hardware/ff538799%28v=vs.85%29.aspx

With the new WAVEFORMATEXTENSIBLE, this is no longer a problem. and we
can have s32 or float32 so we need to actually check / set these correctly.

fixes #1287
ao/wasapi: show actual waveformat tried

also remove bogus ao_format
ao/wasapi: fix set_ao_format

Before it used whatever was in ao->format and changed the bits even
though this might have nothing to do with the actual WAVEFORMAT
negotiated with WASAPI.

For example, if the initial ao->format was a float and we had set the
WAVEFORMAT to s24, this would create a non-existent float24 format.
Worse, it might put an u16 into ao->format when WAVEFORMAT described s16.
WASAPI doesn't support unsigned at all as far as I can tell.
ao/wasapi: make set_ao_format EX/EXTENSIBLE agnostic

There is no guarantee that closestMatch returned by IsFormatSupported
is actually a WAVEFORMATEXTENSIBLE.

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

We should therefore not blindly treat it as such.