Update behavior for alMidiStopSOFT

alMidiStopSOFT now has the following behavior:
* All pending MIDI events up to the current time are processed first, before
the queue is flushed.
* All channels then receive an All Notes Off event so that notes go through
their release phase. Controllers are *NOT* reset.
* Clock time is reset to 0, like before.
Add a alMidiResetSOFT method to reset the synth

Playback is stopped, the queue is flushed, the clock is reset to 0, and the
MIDI system is reset to power-up status.
Don't explicitly set reverb or chorus
Use macros for MIDI controller values
Render some MIDI samples even when stopped

Because stopping MIDI playback puts any playing notes into release phase, they
should be rendered. Ideally it could stop rendering once output goes silent.
Update the midi soundfont config option
Make MidiSynth's methods non-static
Move FluidSynth to its own file
Move the dummy MIDI handler to a separate file
Move the base MidiSynth to a separate file