Engine: Removed unused wouttext_reverseifnecessary function

- Removed unused wouttext_reverseifnecessary function
- Corrected spelling error in comments
Engine: Unify line splitting

Changed the order of operations for reversing text and modified the line
splitting code to use the same function for left-to-right and
right-to-left.
Engine: Unescape \[ before calculating wrapped text width

Replaced the removeBackslashBracket with a new unescape function that
handles both [ and \[. Modified the split_lines algorithm so that text
is unescaped before its width is calculated.
Merge pull request #174 from gurok/331_escaped_bracket

Engine: Unescape \[ before calculating wrapped text width
Removed obsolete code and discontinued dos version / DJGPP code
Engine: D3D9 captures screen from back buffer instead of front buffer
Fixes related to previous commit
Script: SCMD_CALLOBJ permits arguments of 'plugin argument' type

This fix adds missing permission for runtime values of "plugin argument" type to be passed to the function, expecting object pointer. "Plugin argument" is technically a 32-bit value received from plugin, that may be cast to a pointer (e.g. C-string). This is not safe on 64-bit platforms, but there's nothing we can do at the moment (plugin interface must be completely rewritten to achieve compatibility).
Engine: tidying game configuration

* In GameSetup struct changed chars to bools (where appropriate);
* Renamed several variables to better reflect their meaning;
* Made engine_init_screen_settings() function be called only once, before trying to create a gfx driver for the first time.
Engine: log out user's device resolution and supported gfx modes
Reimplemented letterboxed-by-design game mode.

Previously I misunderstood the meaning of the letterbox option in the game properties. It appears it was used to create letterbox mode as a part of game design.
This letterbox-by-design is now applied simply by making AGS pass higher resolution to the graphics mode initialization procedure. This works only for 320x200 and 640x400 games (they appear as 320x240 and 640x480 respectedly, with black horizontal borders).

This feature itself was designed in a rather awkward manner, and its future is unclear, but we leave it be for compatibility with older game projects.

This technically reverts commits:
91513cd9bb0b831d865f5b1553cacd35a86fc759
078ec5e6e3030c489c96a5b05d3a9529b97c36e9
Merge remote-tracking branch 'ags-hub/master' into develop-3.3.1-up-master
Moved gfx driver declarations into separate headers
ALSoftwareGraphicsDriver must call UnInit in dtor

This fixes discrepancy between gfx driver shutdown processes, and moves certain software driver-specific code to ALSoftwareGraphicsDriver class implementation.
Tidying graphic filter classes

* Put filter classes into corresponding namespaces;
* Removed ScalingAllegroGfxFilter for being practically redundant;
* Improved relation between Allegro filter and its derivatives by providing PreRenderPass virtual function;
* Removed justCheckingForSetup parameter in filter initialization for being not used at all;
* Removed constants that duplicated existing GlobalFlipType enumeration;
* Renamed some function names to better reflect their meaning;
Graphics driver factory interface and implementations

Graphics driver factory provides means for creating and destroying graphics driver.
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.