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 following variables are replaced throughout the code:
* scrnwid and scrnhit - replaced by GameState::viewport;
* final_scrn_wid, final_scrn_hit, final_col_dep - replaced by GameState::viewport where they mean native game screen, and by ScreenResolution, where they mean display mode.
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