ListBox: Initial implementation of SDL_KEYDOWN event logic

* examples/gui/create_listbox_ex0: Implement asserts for automated
widget testing.

* examples/gui/create_listbox_ex1: a) Use TrueType font; b) Rename label
texts to 'item_0' && 'item_1', respectively; c) implement asserts for
automated widget testing.

* examples/gui.cpp: Introduce create_listbox_ex2 widget example;
keyboard press & mouse button tests.

* ListBox: Introduce type definition 'derived_class'.
* ListBox: Introduce type definition 'ItemLabels'.
* ListBox: Rename type definition 'SelfType' to self_type.
* ListBox: Rename type definition 'UniquePtr' to 'unique_ptr'.
* ListBox: Rename type definition 'SharedPtr' to 'shared_ptr'.
* ListBox: Rename type definition 'RawPtr' to 'raw_ptr'.
* ListBox: Rename type definition 'ListBoxChoices' to 'ItemStrings'.
* ListBox: Declare update method private scope.
* ListBox: Introduce 'selection' class var along with getter & setter
methods, also included items_size method for obtaining number count of
text labels container.
* ListBox: Clear the text label drawables upon every ::update
call.
* ListBox: Remove (comment) ::get; method is not needed.

* UIEventCallback: Remove const from the end of ::execute method
definition.

* UIEvent: Add nom::Event object into class along with getter & setter
methods for public access; we can now access the nom::Event info
associated with an UIEvent within the registered callback method(s).