Toggle build units, tests, examples for GUI dev
Fix state events ordering bug

The order in which events are processed led to TTcards' events being
consumed in the incorrect order, leading to the bug of us not being
able to use the same key binding for both states.
Rename StateMachine::pop_state( void* )

...to StateMachine::pop_state_resume( void* ) to clarify which method
is being used.
Fix event update logic in ListBox && QuestionDialogBox

Internal updates to the storage model of said widgets need to occur
before emitting the event (for end-user to respond to), otherwise the
data will always be inaccurate (one-off).

* QuestionDialogBox: Disable calling of base class for events; this
corrects a bug in TTcards (ContinueMenuState) when clicking on either
the title or message, due to duplicate indexes being used in both
widgets (TTcards depends on the values for cursor action).

* ListBoxLayoutTest: Re-enable event callbacks -- MOUSE_DOWN, KEY_DOWN,
MOUSE_WHEEL (debugging aid).
Refactor states management interface in SDLApp

* SDLApp: Forward declare Event, RenderWindow, IState and StateMachine.
* SDLApp: Introduce StateMachine object pointer and getter/setter for
use with states management; remove the state management methods from
class (for future maintenance sake).
Fix event callbacks crash by using deferred states management

The transition of the state must be deferred until the next frame update
in order for engine callback systems, i.e.: nom::InputMapper and
nom::UIWidget, to be used within application-level code (TTcards)
that expects to be able to change its state from within said callback
systems. If not deferred, the result is invalid memory access due to
the deletion of the state before the callback is completed.

* Add IState to public headers (system.hpp).
* IState: Forward declare RenderWindow.
* IState: Rename UniquePtr typedef to unique_ptr.
* IState: Rename StateFlags enum to Flags, remove Null enum value
and clean up comments.

* IState: Introduce Type enumeration, getter & ctor argument; describe
placement of state (internal use within deferred state management).

* StateMachine: Forward declare Event, IState, RenderWindow & clean up
header files.
* StateMachine: Remove push_state method; obsolete by deferred states.
* StateMachine: Remove default parameter from data argument in methods.
* StateMachine: Remove pop_state_resume; obsolete by deferred states.
* StateMachine: Introduce next_state method.
Clean up on nom::InputMapper API

* EventCallback: Add const Event& arg for passing to callback method;
this allows us to use the associated event data (i.e.: mouse
coordinates) in application-level code for determining the course of
action.

* EventCallback: Clean up class; forward declare Event, remove un-
necessary methods, such as copy ctor, assignment operator, etc.

* Move KeyboardAction, MouseButtonAction, MouseWheelAction,
JoystickButtonAction and JoystickAxisAction declaration &
implementation into InputAction's file set.

* Refactor InputAction's API to allow for cleaner use & maintenance;
in particular: a) Action structs now inherit off InputAction, whom is
now a base class; b) InputAction now stores a native nom::Event object
for event type & state needs; c) Setting of the callback function has
been moved to InputActionMapper::insert method.

* Clean up examples/events.cpp; disable user event dispatching (still a
bit buggy...), update the RenderWindow background only on event callback,
fix up comments, etc.