config.hpp.in: Introduce C macros NOM_IGNORED_VARS && NOM_IGNORED_ENDL.
IDrawable: Introduce clone method.

* Line: Introduce type definitions for 'self_type', 'derived_class',
'raw_ptr', 'unique_ptr' and 'shared_ptr'.

* Sprite: Introduce type definitions for 'self_type', 'derived_class',
'raw_ptr', 'unique_ptr' and 'shared_ptr'.
Window: Flesh out a few more minor details of class interface

* Window: Introduce method getters && setters for class vars 'id',
'name' && 'updated'.
* Window: (Experimental) Introduce stub method 'generate_id' for
future management of each window's object id instance.
* Window: Introduce reserved class vars 'enabled' && 'visibile'.
SpriteBatch: Implement IDrawable::clone method

* To be safe, we ought not rely on Sprite's clone method, for fear of
potential type / data loss when converting object types.

* SpriteBatch: Rename type definitions to match lower case style
recently adopted.
SublimeText project file: Ignore file 'config.hpp'

* config.hpp is auto-generated by CMake now, so we need to refer to
config.hpp.in instead (this is an enforced reminder for me).
config.hpp.in: Introduce a couple macros

* Introduce NOM_BIND macro; helps shorten the C++ lamda style syntax
for callbacks.

* Introduce NOM_DISABLE_GFX_LOG_TRACE preprocessor definition for quickly
turning off NOM_LOG_TRACE debug output on the following classes: Image,
Texture, Text, BitmapFont and TrueTypeFont,
IState: Introduce optional method 'on_event' interface

* This provides us an alternative way to access the underlying events
subsystem without using the virtual method calls provided by
EventHandler -- allowing us to bypass it entirely if need be.

* StateMachine: Rename method 'process_event' to 'on_event' -- this was
done to lessen the confusion of the many classes that use the same
name, but more importantly to resolve an issue where
EventHandler::process_event was being called instead of the intended
IState::process_event (as it is the most derived class within that area).
Major overhaul on events handling subsystem -- Observer pattern events

* UIEventHandler: Rename of ::on_event method to ::process_event.

* UIEvent: Introduce constructors for initializing with a nom::Event
object, as well as initializing its internal index, text & event class
variables.

* UIEvent: Introduce UIEventType enumerations (hopefully a temporary
means of providing event type info across our GUI class interfaces).

* Introduce UIEventDispatcher class interface; this provides a simple,
flexible Observer pattern to events handling, and replaces
Window::register_delegates entirely.

* QuestionDialogBox: Rename ChoiceTexts to ItemStrings && introduce ItemLabels
type definition.

* QuestionDialogBox: Introduce helper methods 'selection', 'items_size'
and 'set_selection'.

* QuestionDialogBox: Rudimentary text color change upon selection
support logic.

* QuestionDialogBox: Implement rudimentary events logic for handling
SDL_MOUSEBUTTONDOWN, SDL_KEYDOWN && SDL_MOUSEWHEEL actions.

* MessageBox: Fix issue where we could not use register both available
event listeners -- mouse button & mouse selection -- by relocating the
window-scope logic below the of the conditional checks.

* ListBox: Implement rudimentary events logic for handling
SDL_KEYDOWN && SDL_MOUSEWHEEL actions.

* Window: Introduce global_bounds method.
* Window: Move event dispatching functionality: delegates, registration and
the ::on_event virtual  method into a new class interface --
nom::UIEventHandler. nom::Window now derives from the UIEventHandler
class. nom::UIEventHandler inherits Transformable so that Window and
friends is still able to use its methods.

* GUIApp: Introduce ::on_update method; reserved for future use (not used yet).

* examples/gui: Introduce events dispatcher tests.
* examples/gui: Dedicate two new callback methods for listbox_ex2 widget
for testing mouse wheel & keyboard actions;  'listbox_ex2_on_selection',
'listbox_ex2_key_selection'.

* examples/gui: Dedicate two new callback methods for qbox_ex0 widget
for testing mouse wheel & keyboard actions;  'qbox_ex0_wheel_selection',
'qbox_ex0_on_selection', along with a class-scope object pointer to the
qbox_ex0 widget found in create_qbox_ex0 helper method.