EMI: Add volume/balance support to Poolsound/Track

Add volume and balance support. If a track is already playing, update
the values via the mixer accordingly.
EMI: Add comment and fix special handling in Imuse

Add a comment about the input/output range of:
Imuse::setPan (0 ... 127)
Imuse::getPan (-127 ... 127).

The value is stored internally as 1000 * input range
(0 ... 127000), so a value of 6400 is not possible:

int getPan() const { return (pan != 6400) ? 2 * (pan / 1000) - 127 : 0;
}

Changing to 64000 which roughly corresponds with a balance of +/- 0.
EMI: Implement sound-panning for EMISound

Implement sound-panning for EMISound and add a comment to document
the input range of EMISound::setPan.
EMI: Fix the intro at cs_dock getting stuck in the PS2-version.

IsActorChoring takes different parameters in EMI than it does in Grim,
the original code was prudent enough about checking it’s parameters that
it actually ran fine, however the problem was that the argument that
said whether we should ignore looping chores was moved. This lets the
intro play the cut scene on the docks.
EMI: Allow movie skipping in the PS2-version.

Catch the ESC-key event manually for the PS2 version,
to allow skipping movies. (This also eats up the ESC-key event,
to avoid passing it on to lua afterwards).
EMI: Avoid updating lua while playing movies in the PS2-version.

Otherwise the scripts that start after a movie start prematurely, in the
case of the dock intro, this means that the dialogue on the docks starts
playing at the same time as the arrival video starts playing. With this
fix we avoid that issue, resuming operation as normal only when the movie
is finished.
Merge pull request #770 from somaen/fixPS2intro

EMI: Fix the intro at cs_dock getting stuck in the PS2-version.
Merge pull request #771 from somaen/fixPS2movies

RFC: EMI: Fix ps2movies
EMI: Reduce jerkyness of animations
Merge pull request #772 from inguin/emi-fixes

EMI: Fix handling of actor turn chores
EMI: Do not reset animations based on keyframes

This causes issues with idle animations. There is
probably some logic we are missing in here, but this
change makes idle animations look proper.
EMI: Do not invert sprite x coords

This fixes an issue caused by correctly drawing sprites facing the camera.
Because we do it more like GRIM we do not need to invert the x coord.
EMI: Implement IsSoundPlaying

IsSoundPlaying is needed for the ambient sounds in EMI. It needs to
return true during playing to avoid a premature lua call to free_sfx
and it needs to return false once the sound is finished to allow the
transition to the next ambient sound effect.
EMI: Correct cacluation of sound position

In GRIM the position, direction and the roll of the camera is set via
gluLookAt but in EMI the camera is steady and its view is adjusted via
matrix rotations.

This patch adjusts the calculation for EMI and refactors the code to
do the calculation in the separate function Set::calculateSoundPosition.
That function will be used for implementing the positional sounds in
EMI.
EMI: Implement/enhance LUA sound calls

Enhance functions:
- Lua_V2::PlaySound: make usage of volume parameter
- Lua_V2::PlayLoadedSound: make use of volume parameter

Implement functions:
- Lua_V2::GetSoundVolume
- Lua_V2::SetSoundVolume

Implement the sound positioning in:
- Lua_V2::PlaySoundFrom
- Lua_V2::PlayLoadedSoundFrom
- Lua_V2::UpdateSoundPosition
EMI: Rework text stack handling

The text stack in EMI must be saved and restored in save games because
the game will call PopText after returning from the menu. Instead of
managing separate lists for each text stack level this patch adds a
_stackLevel field that is incremented for PushText and decremented for
PopText. Only text objects from the stack top (level 0) are rendered.
Merge pull request #773 from inguin/emi-text-stack

EMI: Rework text stack handling
Merge pull request #766 from chkr-private/sound-fixes

EMI: Music and sound effect enhancements
EMI: Patch a typo in mot.lua

This caused issues with guybrush using his inventory while on the raft
EMI: fix attached actor handling in swamp

Time paradox is now playable.

- local _pos and _yaw values seem to be relative
to the actor where the current actor is attached to

- to accomodate this, Lua_V1::GetVisibleThings,
Actor::getYawTo and Actor::getSimplePuckVector should use
world coordinates