Many fixes for GL3 and GL1

Now they both at least partly work. GL3 was so broken it didn't run any
examples. GL1 failed with tiles during room changes as well with other
things.

-Implemented tile system for GL3 so it works with VBO's now. It actually
uses d3d_model functions, so it should be graphics system independent.
This means with little more changes the whole thing can be put in
General and that would automatically implement tiles for D3D as well.
There of course might be a better way to do it in D3D, so maybe it can
stay separate.
-Tile system now actually allows runtime tile addition and deletion in
both GL1 and GL3.
-Fixed so shapes functions actually take into account bound alpha.
-Implemented draw_line_width and draw_line_width_color.
-Fixed draw_arrow.
-Fixed tile struct so scaling and alpha is a double, not an int. Also
added scaling to tile_add.
-Added d3d_model_part_draw which is used in the tile system. It allows
drawing only part of the model by specifying start indices and number to
draw.
-Fixed off-by-one error when drawing screen to surfaces. Should be
tested with other GPU's (tested here with Nvidia).
-Blend functions in GL3 now calls batch flush.
-Transformation functions in GL3 now calls batch flush.
-When loading fonts pixels with alpha = 0 now are black. This fixes
blending bugs. But something still needs to be done with AA.

Tile system and batching is still sometimes buggy in GL3. An example can
be seen here: https://dl.dropboxusercontent.com/u/21117924/tile_test.gmk
. It will work fine in GL1, but will be buggy in GL3.
Examples like the shadow engine still don't work in GL1 and GL3.
Bugfix: {if (x) (y()).z = a;} would fail to parse correctly.
  This was remedied by removing the un-needed parens around y().
Bugfix: memory leak in parser_add_semicolons.
Implemented keyboard_set_map, keyboard_get_map, and keyboard_unset_map for the Xlib backend.
Implemented keyboard_clear().
Removed "usermap", which appears to do nothing.
Implementation mirrors the Win32 implementation.
Merge pull request #601 from sorlok/key_mapping

Implemented undefined keyboard functions in Xlib backend.
Merge pull request #600 from sorlok/paren_dot_syntax

Bugfix: {if (x) (y()).z = a;} would fail to parse correctly.
Fixed Mouse Cursor Messages for Win32
The user cursor is only supposed to be set when the mouse is in the client
area of the window, not its border. I resolved it by intercepting the hit
test window message and checking if the mouse is in the client area and
then setting a boolean value which I use in the set cursor message to
determine whether to set the user cursor or delegate to the default window
process. Tested and confirmed working, please merge when ready.
Merge pull request #602 from RobertBColton/master

Fixed Mouse Cursor Messages for Win32
Cleaned Up Win32 Cursor Hit Test
It was actually much easier than I coded it in my last commit, lParam
contains whether the mouse is in the client area, so less code, and this
method works better to the other way was glitchy.
Merge pull request #604 from RobertBColton/master

Cleaned Up Win32 Cursor Hit Test
Merge pull request #597 from enigma-dev/daedalusx

Many fixes for GL3 and GL1
Merge branch 'master' into gm5_compat
Added enough wrapper functions to get draw_rectangle() working flawlessly in GM5 compat mode. The use of magic global variables has still not been addressed.