Graphics driver factory manages gfx filters

Driver factories now provide methods for enumerating graphics filters and assigning new filter to graphics driver.
The setting filter method is removed from driver interface, because every driver works with particular base filter class.
Incomplete OpenGL driver now has its own dummy filter class (that does nothing at the moment).
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;
* 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)
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:
    * graphics / filter - filter id (renamed from misc / gfxfilter);
 * Game scaling and positioning factors; may be defined in either uniform or distinct way:
    * graphics / game_scaling_both;
    * graphics / game_scaling_hor;
    * graphics / game_scaling_ver;
    * graphics / game_frame - defines how game frame is positioned inside screen (window):
       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