Fix-roundup.

- Acquire channel only while actually playing a sound
- Fix play failure when playing sounds sequentially
- Slight internal API cleanup
Add test code
Fix crash & warning in GmeDecoder
Fix MT problem and reorganize code a bit