Force all FluidSynth sounds off when changing soundfonts

Selecting soundfonts should only happen when the MIDI engine is stopped or
reset. When stopped some notes may be left in a release phase, but we need to
ensure all fluid_sample_t objects are finished before unloading since the
soundfont (and associated sample memory) may be deleted at any time afterward.
Pass the ALsoundfont object to loadSf2, rather than its ID
Don't allow soundfonts with existing presets in alLoadSoundfontSOFT
Move alLoadSoundfontSOFT to alSoundfont.c
Update the soundfont preset count after loading a soundfont
Move some preset alloc/dealloc code to separate functions
Move some error macros to alError.h
Load presets directly into objects
Mostly load into fontsound objects directly

This leaves only one unsafe alFontsoundiSOFT call.
Use a uint map for modulators
Don't handle the list type in the RiffHdr struct
Avoid using alFontsoundiSOFT when loading a soundfont

This should now make the soundfont loader thread-safe.
Move ALsoundfont methods to the right source file
Remove an unused method
Add storage for a default soundfont object
Allow selecting the default soundfont using ID 0
Don't allow min key/vel ranges to exceed max range
Update some trace messages to be more useful
Don't create presets that don't have any usable sounds
Trace preset, instrument, and sample names with invalid key and velocity ranges