Don't link with libwinmm unless WinMM is enabled

We don't use timeGetTime for timing anymore, so winmm only needs to be linked
when the winmm backend is enabled.
Add a SZFMT macro for a size_t string formatter
Convert the DSound backend to the new API
Use an al_string in the PulseAudio backend instead of char*
Use a vector for the PulseAudio DevMaps
Use the stored format block align instead of calculating it
Only declare backend options when the backend is available
Use the althrd methods in winmm
Trace the device name being opened in ALSA and PulseAudio
Use al_string for ALSA's device map
Use a vector to store the ALSA device lists
Avoid dereferencing a NULL pointer
Use a helper to return mmdevapi message thread responses
Fix adding backend include directories
Simplify the cmake backend handling a bit
Avoid some superfluous types
Properly handle HAVE_DYNLOAD in the dsound backend