Update gamemus utility for new Music structure
Restructure Music and related classes to handle patterns

Also lays the foundation for .mod effects.
Update test code for Music restructure
Add support for ScreamTracker 3 .s3m files, including tests
Update Zone 66 CDFM format to work with new Music structure
gamemus: Add option to dump metadata tags
dro2txt: Display both freq and OPL fnum, not one or the other
Move Tempo into separate file and fix mod speed/tempo calculations
Add DOSBox OPL synth and playback code

The gamemus utility can now play songs using the library's event-processing
code.
Switch to normal buffering instead of low-latency to avoid underruns

The audio was frequently cutting out in low-latency mode, so this now switches
to normal latency and delays the UI updates so they are still in sync with the
audio.
Add a ticks-per-track value so the length of each track in a pattern is known
gamemus: Add -w option to render song to a .wav file
Include time until end of track when calling endOfTrack() and endOfPattern()
Update OPL generation code to work with new architecture
gamemus: Include loop count when calculating progress percentage
Add event processing by order list as well as by pattern

This is used for file formats that don't have a concept of reusable patterns
and need the patterns sorted and duplicated by order to produce the song
correctly.
Add PCM synth to play sampled instruments
Add support for GUS variant of Zone 66 music
Zone 66: Update GUS handler and add test code

Note volume/velocity is now correctly handled.
Update OPL decoder to work with new song structure

Decodes song as one big long pattern.