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.
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