EMI: Implement fading of sound tracks.
EMI: Do not cross-fade music if no music track was previously playing.
EMI: Music sync value 0 means no synching.
EMI: Push also the iMuse state number to the state stack.
EMI: Parse the first parameter of ImPushState.

This fixes the credits music not playing in the main menu.
EMI: Pass a file path string instead of a file stream to SoundTrack::openSound.
EMI: Initialize EMISound instead of iMuse at engine startup.
EMI: Make callback FPS a constructor parameter of EMISound.
EMI: Free channels that have finished playing.
EMI: Move initialization of sound effects to EMISound.
EMI: Free the sound channel immediately if sound track initialization fails.
EMI: Replace asserts with warning when trying to change parameters of a sound track that doesn't exist.
EMI: Do not expose the sound handle in SoundTrack.
EMI: Fix crash if a .jmm file does not contain a jump cue.
EMI: Lock when channel state is modified from the game thread.
EMI: Update _curMusicState also when state 0 is requested.
EMI: Respect balance and volume parameters when starting a voice.
EMI: Extract common functionality from EMISound's startSfx and startSound methods.
EMI: Pause sounds in draw mode.
EMI: Implement start offset in AIFFTrack and VimaTrack.