TINSEL: Clip mouse position to be within the screen (bug #3613765)

The mouse cursor warping code via the keyboard allows the cursor to go
outside the screen. We now limit the cursor's position to always stay
within the screen
SCI: Avoid using g_sci for usesOldGfxFunctions() in the GfxPorts class
NEVERHOOD: Fix warning
SCUMM: Added another Russian variant of Full Throttle
SCUMM: Corrected Russian Full Throttle variant names
ZENGINE: Creates zengine bare structure

Adds zengine base engine to engines/zengine as well as
modifies the necessary engine files (configure.engines, etc.)
in order for it to be recognized.
ZENGINE: Allows detection to go off inner directory. Starts looking into Engine::Run

Game detection needs to be off an actual resource, but all the resources
are in subdirectories. This updates the code to search for the specific
subdirectory.

File opening isn't working atm. Pushing so wjp can look at the code
ZENGINE: normalized file endings
ZENGINE: Alter video handling to follow the new video audio track wrapper.

Commit 7a49802c01b0c39be4e86335689db8f3359fde68 created an audio track
hook that allows video decoding to use a differnt audio track encoding method

Also, re-normalize line endings
VIDEO: Add an over-ridable wrapper for the AVI audio track handler

This is based on a suggestion made by clone2727, so the original
idea belongs to him.
Engines can now override the common AVI audio track handler with a
custom one. This is needed for the Z-Engine AVI videos, since they
use a custom audio decoder that is only used in the two Z-Engine
games, and has its own fake AVI audio format (17). This clashes with
the MS IMA ADPCM format, and therefore shouldn't pollute the common
AVI video decoder code. The addition of this over-ridable method
allows the Z-Engine to add its own custom AVI decoder while avoiding
code duplication.

Signed-off-by: richiesams <adastley@gmail.com>
ZENGINE: Add support for ZFS archive files

ZfsArchive implements Common::Archive.
ZENGINE: Add xor encryption handling to ZfsArchive class
ZENGINE: Clean up includes
ZENGINE: Create skeleton engine and move code away from Engine::Run

The goal is to have Engine::Run as clean as possible. Aka mostly method
calls.
ZENGINE: Create utility function that writes File contents to another File

scr files are stored and encrypted in archive files. This is an easy
way to dump them for debugging purposes.
ZENGINE: Create Object class.
ZENGINE: Split puzzleControl into two files. Add ResultAction enum

After further investigation, puzzles and controls don't really share any
structs. So it makes more sense to keep them seperate.
ZENGINE: Add documentation to utility functions and add a glorified trim function
ZENGINE: Create base puzzle parsing.
COMMON: Add erase method to String class