Fix compile errors with MSVCPP

* config.hpp.in: Fix compile errors that result from using
NOM_IGNORED_VARS, NOM_IGNORED_ENDL macros on non-clang
(i.e.: MSVCPP) platforms.

* UIEventDispatcher: Fix compile err on MSVCPP; missing header file.
Introduce UnitTestTemplate.cpp -- for use with GTest

* CMakeLists.txt: Change NOM_BUILD_TEMPLATES_UNIT from an option to a
variable; this allows us to toggle the variable on/off without
regenerating
the project files.

* tests/CMakeLists.txt: Introduce (optional) compiling
UnitTestTemplate.cpp.
Introduce output of function in NOM_DUMP, NOM_LOG_INFO macros

* config.hpp.in: Redefine NOM_DUMP_VAR macro to use NOM_DUMP.

* config.hpp.in: Add function signature to NOM_DUMP and NOM_LOG_INFO
macros.
Refactor ListBox widget

* types.hpp: Introduce static variable 'npos'.

* Window: Introduce updated && set_updated methods.

* Introduce gui_config.hpp.

* Introduce UIItemContainer class for use with ListBox & alike widgets.

* ListBox: Refactor class to use UIItemContainer for its internal
storage of items; this makes ListBox responsible for only rendering.
Items now must be accessed via ::store object pointer and set using
either ListBox's constructor or ::set_item_store.

* ListBox: Introduce support for conserving spare CPU cycles by updating
rendering object list by calling ::update internally when necessary, and
returning before rendering would occur when object state is up-to-date.

* ListBox: Introduce support for changing the highlighted (selected)
item's text color.

* ListBox: The valid method now checks for validity of the internal
storage object (UIItemContainer).

* ListBox: Implement default event listeners for key press, mouse down
and mouse wheel aactions. This addition has two side effects; a) breaks
user-defined registration of event listeners (will be fixed in a future
version); b) event actions are updated on all widgets simultaneously,
due to the fact that we do not yet handle widget focus, and will also be
corrected in a future version.

* Introduce tests/gui/UIItemContainerTests.cpp for UIItemContainer class.

* examples/gui.cpp: Call GUIApp::on_update method in the game loop.

* examples/gui.cpp: Relocate App::do_event_dispatcher_tests & its helper
methods to tests/gui/UIEventDispatcherTests.cpp.