Initial events propagation handling logic (widgets && states)

* UIWidget: Change return type of virtual input event method
implementations to bool (from void); this allows us to implement
simple event propagation logic from within UIWidget::process_event.
  This resolves a couple implementation issues that was preventing
proper widget focus from occuring in ListBox -- "WheelFocus" and lack
of key input focus without first explicitly clicking within the widget
bounds).

* IState: Change return type of virtual ::on_event method
implementation to bool (from void). This allows us to implement
event propagation logic handling, of which is required in order to
begin tying in GUI widgets event processing into application-level
code (TTcards).

* StateMachine: Refactor ::on_event events handling logic to call the
state's EventHandler::process_event method only when IState::on_event
returns false (which is the default). This lets us override the event
handling to begin figuring out how to best plug widget event handling
into the overall engine.
Implement action trigger bindings for mouse button clicks

* MouseButtonAction: Implement clicks field (analogue to
SDL_MouseButtonEvent::clicks field).

* InputStateMapper: Implement logic for recognizing mouse button
clicks; this lets us implement action triggers that take into account
the number of clicks (i.e.: left mouse button double click action).

* InputStateMapper: Clean up conditional logic within ::on_key_press
and ::on_mouse_button methods.
  The logic clean up within ::on_key_press appears to have fixed a
mismatch bug when using multiple key modifiers with a single symbol
(i.e.: SDLK_e, KMOD_LGUI && SDLK_e, KMOD_NONE), leading to only one
of the actions being executed.

* examples/events: Add mouse button mapping for testing the new clicks
action triggering feature; this is for implementing bindings that allow
for single, double, ... button clicks to be acted on.

* examples/events: Add simulated (fake) input event test; the
internal nom::EventHandler::push_event method offers us this
capability.

---

VisualUnitTest: Add key binding for quickly terminating all tests

* The returned exit code should always match the number of failed tests
up to the moment of termination.

* UnitTest: Introduce ::failed_test_count method. This is used for the
return exit code (see above).