* implemented/added the new gui:
 * all gui related drawing is now backed by a separate framebuffer (gui_surface) with redraw control; all buffers are then blitted onto the main gui fbo, which is then blended with the scene buffer and finally drawn into the main framebuffer; -> slightly modified user gui draw callbacks because of this
 * gui: mouse and keyboard events are now being deferred and handled separately in the gui thread (which will then push the events to all windows, which will in turn push them to all gui object children that are affected by these events; gui_objects will then start separate tasks (threads) for all triggered gui events)
 * creation of gui_objects is realized via a variadic template in the gui class (gui->add<gui_object>(...)), which will in most cases just new a gui_object with the forwarded/specified arguments (for gui_windows, this will additionally add the window to the gui)
 * the gui class now creates a gui_theme and font_manager object (+added getters)
 * implemented gui_theme: in short: a complete xml-based wrapper of gfx2d primitive rendering and font rendering (coordinates can be a raw pixel value or a percantage, in which case the value will be computed at runtime, depending on the draw size; colors can also be raw float4 values or references to colors in the specified color_scheme)
 * added gui_surface: this is the base class for any gui related buffered drawing (via rtt fbo) (-> ability to resize and blit to main gui fbo)
 * added gui_simple_callback (inherits from gui_surface): this is used for drawing all user/external gui callbacks in a separate buffer now (-> user has control over whether a redraw is necessary)
 * implemented/"added" gui_object: this is the base class of all gui objects (functionality includes basic positioning/sizing, parent/child control/handling, gui event handler control, object state handling, object locking and redraw handling)
 * added gui_window: implements both gui_surface and gui_object (+interaction between the two); this is basically a container for gui_objects: this passes on resizing info, calls child draw functions and does the event handling (checks if events need to be handled by a child, and if so, calls the child event handler function + position correction)
 * added gui_text: just a simple object that displays text (should be the base class for any text related gui object)
 * added gui_button: a simple gui button (note: this already handles button clicks correctly -> handlers are called)
 * added reload capability to gui_color_scheme (and gui_theme)
 * added gui_event.h, which contains all possible gui events (button press, slider move, ...)
 * in event_objects.h: enums in the EVENT_TYPE enum class also store the general type (mouse, keyboard, other or user event) of the event now (in the upper 4 bits)
 * mouse_wheel_event_base also stores a position now (required for correct handling in the gui)
 * added task class (this will asynchronously, in a new detached thread, execute a function and then self-destruct)
 * in thread_base: when the thread delay is set to 0, this will yield the thread instead of sleeping for 0ms
 * in font: glyph_data also stores the actual glyph size now (renamed old size variable to layout)
 * when caching text / creating the text ubo data, the extent of the text will also be computed and stored now (additional float2)
 * global change: "core/util.h" is included directly in "core/platform.h" now (-> no need to include it in global.h)
 * finally got rid of the core class instance/object (constructor/destructor are marked deleted now and engine getter has been removed)
 * handle (config) gui anti-aliasing directly in the engine class (-> getter returns the actual anti-aliasing enum now)
 * don't disable blending when calling start_2d_draw in the engine class (this also affects rtt)
 * removed compile_time_check from util.h (superseded by static_assert)
 * moved cbegin/cend from util.h to cpp_headers.h
 * added make_unique to comfortably create unique_ptrs (analogous to make_shared for shared_ptr); define A2E_HAS_MAKE_UNIQUE if it already exists
 * added enum class bitwise operator (and/or) helper defines/defintions (+use them where appropriate)
 * fixed printing of hex values in the logger (pointers did have a 0x0x prefix)
 * added floor and ceil functions to vector2
 * xml_doc nodes are now stored in a vector instead of an unordered_map, so the correct node order is being kept (same order as in the file)
 * modified rtt::stop_draw to use the draw_width/draw_height instead of width/height when blitting the buffer (when using msaa); removed redundant glBindTexture
 * removed gfx2d::draw_textured_fullscreen_triangle (not needed any more)
 * fixed gfx2d primitive_properties flags union (+made primitive_properties completely modifiable)
 * gfx2d gradient_positions are now called (gradient) stops
 * added new and some missing includes to a2e.h
 * and finally: version bump to 0.2.1-b7 (should probably bump to 0.3 ...)