Moved mouse translation out of gfx filter class

This introduces helper Scaling class that performs translation between native game coordinates and actual screen. The graphics filter no longer manages coordinate translation, a global scaler is used instead; this helps to remove all references to graphics filter from general game code.
Graphics driver is set up with source and destination rectangles

This allows graphics driver to define source image scaling independently from graphics filter, therefore it is no longer restricted by filter multiplier. The scaling is set up explicitly, rather than calculated based on filter properties.

Additionally, picked out common members and operations into GraphicsDriverBase parent class.
Graphics filter is set up with source and destination rectangles

This allows graphics filter to define free source image scaling.
Direct3D driver properly implements source-to-destination rendering

This makes D3D driver to use viewport technique instead of manually "creating" black borders around scaled game rectangle.
Also adds support for separate horizontal and vertical scaling.
Engine: screen borders not handled by game drawing routine anymore

In the original AGS the black borders (for letterbox/pillarbox modes) were part of the game drawing routine. The scaling performed by graphic filters included scaling of black borders as well. When game dsplay size was calculated, borders were took into consideration as well.

This removes boxing borders from game business logic and lets the graphic driver handle them instead.

New game properties introduced are:
* GameSetupStructBase::size - defines native game size;
* ScreenResolution - defines actual display (window) resolution;
* GameState::viewport - defines room viewport, a size of playable area, which may not be larger than game size;
* GameState::native_size - defines game native size on low-res coordinates (for backwards-compatibility only)

For this commit most variables are replaced throughout the code automatically:
* scrnwid and scrnhit - replaced by GameState::viewport;
* final_scrn_wid, final_scrn_hit, final_col_dep - replaced by ScreenResolution
Engine: removed screen resolution from game calculations

This replaces the most references to ScreenResolution in game logic with game.size, thus strictly limiting it to native game pixels.
Engine: rewrote gfx mode initialization complying with free resolution

Introduced new configurable properties used to setup graphics mode.
 * Driver setting:
    * graphics / driver - driver id (renamed from misc / gfxdriver);
 * Size of actual screen resolution:
    * graphics / screen_def - sets how game determines screen resolution:
       may be "explicit", "scaling" (equal to scaled game) or "max" (equal to device/desktop size);
    * graphics / screen_width;
    * graphics / screen_height;
    * graphics / match_device_ratio - forces game to find nearest resolution matching current device/desktop ratio
 * Filter setting and scaling factors; may be defined in either uniform or distinct way:
    * graphics / filter - filter id (renamed from misc / gfxfilter);
    * graphics / filter_scaling;
    * graphics / filter_scaling_x;
    * graphics / filter_scaling_y;
 * Game frame placement;
    * graphics / game_frame - defines how game frame is positioned inside screen (window) after being scaled with filter:
       may be "offset", "center", "stretch" or "proportional".
Engine: removed obsolete code

This is made as a separate commit because git diff was messing new and removed code up to the point it was too difficult to understand how logic changed.
AGS.Native: updated to comply with recent engine changes