Only define SSE, Neon, and FluidSynth options if they're available
Use FindALSA.cmake to look for ALSA

Also, only provide the ALSA_BACKEND_ALSA option if it's available
Set -D_GNU_SOURCE=1 -D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=700 earlier
Dont bother trying _alloca

We prefer C99 variable-length arrays, and other systems (including MSVC9) don't
have an issue with alloca.
Use C11 alignas when available
Add a GCC-specific STATIC_UPCAST macro that checks the object type

The check is compile time, and is functionally identical to the old/alternate
version.
Use find cmake modules for more backends
Use a find module to look for DirectSound