Merge pull request #262 from RobertBColton/master

Implemented keyboard_lastkey with code that changed hands six times. Sigh.
Refactored and improved compiling games from the command line.

Changed the return status code from "double" to "int" in the
compiler, and made the plugin exit with that code when compiling.

Improved the interface and functionality of the plugin when
compiling. A help interface is printed with -h, and the plugin
now supports an argument to let the user select the API,
overriding the game's selection. This is useful in cases such
as when doing automated integration testing for several different
API selections. An argument for the output location of the
compiled executable is also supported.

Also fixed a minor bug in EnigmaSettings.java.
Merge pull request #264 from RobertBColton/master

Implemented keyboard_string, reduced interpolation code.
Added png saving, changed drawing functions etc.

-Added lodepng. Right now only used in surface_save functions, but will
be expanded to loading as well in near future
-Change all FBO functions to ARB. This fixed a bug where they didn't
work on an intel card. Now should work on almost everything newer than 4
years
-Fixed some drawing functions, like draw_ellipse which previously
rendered buggy
-Changed WSdialogs.h to match windows implementations definitions (open
and save dialogs have optional caption) and added that optional caption
to GTK+ widget system so it should work on Linux. This in turn fixes
compilation error on Windows
-Populated parameter_string so it's actually possible to get argv on
Windows. Implemented using vectors which should be more C++ like. Still
isn't implemented on Linux though

Things that should be more tested and that could break things:
-Changed many drawing functions which involved drawing lines to have a
0.5 pixel offset. That fixes a bug on Nvidia cards that made things like
rectangle drawing imprecise. Could lead to problems on other cards. By
some research this seemed the best option and should in theory work on
everything the same way (OpenGL standard sadly doesn't require lines to
be drawn pixel perfect the same on different implementations)
-Changed glOrhto in surface functions. This fixes a 1pixel offset bug on
Nvidia cards (both when drawing on the surface and when saving as a
file). Could create a 1pixel offset bug on other hardware. Should test.

Changes to come:
-Will change lodepng back to have decode functions and implement .png
loading in functions like sprite_add()
-Will test and fix .bmp saving. Currently still errors or outputs wrong
values on some surface sizes. Still the same behavior even when all of
the code has been changed (now implemented purely using a vector)

If anything breaks then commit fixes if possible or just revert the
nessesary parts, as I sadly can't test on Linux. Robert broke Windows a
few commits ago, so it's clearly not that big of a deal.
Added cross platform ini reading functions.
Merge pull request #265 from aeTwist/master

Added cross platform ini reading functions.
Merge pull request #266 from RobertBColton/master

Text Drawing Precision
Fixed error with zero-check in hspeedv/vspeedv; other.

Fixed return value in BBox/move_bounce_object.
Fixed errors in speed, direction, hspeed, vspeed.

Assignments to speed, direction, hspeed and vspeed now
passes all tests.
Merge remote-tracking branch 'upstream/master'

Conflicts:
	ENIGMAsystem/SHELL/Graphics_Systems/OpenGL3/GL3surface.cpp