Added slider widget to BasicGUI

-Added basis for slider widget.
-Finished toggle widget (checkbox).
-Added new state (on_active) for buttons.
Progress on sliders and cleanup

-Worked on sliders more.
-Now using C++11 features to get rid of constructor.
-Using std::arrays instead of regular static ones.
-Fixed button widget bug alignment bug.
-Windows can be non-draggable now.
-Fixed bug where index out of range was used. Didn't cause segfault yet,
but techincally could have.
Two steps forward, one step back

-While implementing sliders I noticed that I actually need two pairs of
functions for sprites, padding, borders and so on. This meant even more
code duplication. So I went the unity way and implemented basis for
styles. Styles define the look of an element. So now all the of the
sprites, padding, fonts, colors and so on are done on styles. Then a
style is assigned to a widget.
-Redid some loops into C++11 style, which actually sped them up about
2-4x.
Finished implementing styles

-Toggles now use styles.
-Buttons now use styles.
-Sliders now use styles.
Added labels and sliders now use styles

-Labels are added. They support both text and sprites. They are just
static elements that don't support any events and are used to add static
elements to GUI. Difference between them and regular "draw_text" is that
they can be used as children for windows, so they can follow windows and
their depth is correct.
-More progress and sliders.
Merged up-stream

-Now the branch is up-to-date.
-Fixed merge conflicts.
Finished sliders

-Sliders seem a lot more finished now. You can specify both the size and
offset of the slider indicator (the thumb that you drag).
-Now you can get styles.
-Some fixes.
Fixes header

-This error also caused the plugin and LGM to segfault.
direction is now limited to 0:360

-But it will only work if direction is set in range -360 to infinity.
The negative part is a problem. If a user sets direction = -4000, then
direction will be -40, which is incorrect. I can't find a way to do this
without a loop.
Fixes direction

-Added this check to reflexive_types.cpp, because planar_object
propagate_locals() function is only called in some localsweep event,
which seems to happen once per step. This means that if I set direction
= -4000 in draw event and then the next line draw_sprite() draws it,
then it will crash. Now the check will happen every time the direction
variable is changed, which is often actually less than once per step. So
this should also be faster and fix the bug.
-Turns out if we just flip the order of the two operations, we get
correct result for any negative number.
Worked more on event propagation and groups

-Added groups - they allow things like radio buttons. You create a group
and add several buttons or toggles to it. When one of the buttons is
pressed, then the rest are set to inactive. So like a radio button list.
-Worked more on event propagation, so now it works better when you
activate one element, but then move mouse very rapidly over another.
Right now the depth is broken for some reason, so the events are
reversed.
-Added functions to get if slider, toggle or button is active (pressed).
-Changed many loops to ranged ones just for cleanup.
Surface flip

-Flipped back the surfaces. This might not be the final solution, but at
least some examples/games will be more consistent with GM now.
Added projection_stack, fixed sliders and more

-Added d3d_projection_stack_* functions. They were required for
surface_reset_target() to work correctly and not require the user to
manually reset the projection matrix. Also, viewport_ is saved in
variables, so surface reset can reset it as well. This fixes many
fringe'y surface bugs.
-Sliders now take minimum value correctly into account. Also, callback
function/script is called every step while the slider is dragged. For
sliders it make more sense this way (previously it was called only on
*release* which doesn't make any sense at all).
-A possibly faster d3d_projection_stack_clear and
d3d_transformation_stack_clear.
Merge pull request #841 from enigma-dev/GL3.3RealCleanUp

Gl3.3 real clean up
Merge pull request #875 from sorlok/make_fix_override

Added override flag to CXXFLAGS/CFLAGS/LDFLAGS
visible is not carried over in instance_change. Also, craete() is called after the defaults are set (it can override them).
Merge branch 'instance_change_fix' into untitled_1

Conflicts:
	ENIGMAsystem/SHELL/Bridges/Win32-OpenGL3/graphics_bridge.cpp
	ENIGMAsystem/SHELL/Platforms/xlib/XLIBmain.cpp