Introduce DataViewListTest::on_click method

* This is done only so we do not have to log the id field member
of the UIWidgetEvent object.
DataViewListTest: Increaase height of widgets
SDL2Logger: Introduce control over auto-spacing logging messages

* Introduce NOM_LOG_CATEGORY_MEMORY, NOM_LOG_CATEGORY_MEMORY_TOTALS
enumerations; these will eventually be used for logging memory allocations
and deallocations once we finish implementing a global new/delete method
for use.

* SDL2Logger: Introduce boolean auto_space class var & ctor argument for
allowing us to optionally control whether or not to insert a space char
at the end of a log message (applicable when varadic args are used).
  The NOM_LOG_MESSAGE helper macro has been updated with the
default arg of disabling the insertion of a space char.
(This may change back in the near future...)

* Image: Update ctor & dtor trace logs to use SDL2Logger interface.
* Texture: Update ctor & dtor trace logs to use SDL2Logger interface.
Bit of clean up work on version & revision files

* Fix lack of version string output (past the major integer) in
nom::version by using std::ostringstream.

* Move nomlib/revision.hpp header file to public header scope --
version.hpp.

* Introduce NOM_VERSION && NOM_REVISION macros.
Unlock video memory (if locked) during dtor in Texture & Image

* Image: Fix a crash that occurs inside ::locked when the object had
not yet been initialized with a SDL_Surface (AKA NULL pointer).

* Introduce NOM_DELETE_VOID_PTR macro helper.
Massive clean up of header files (speed up build)

* UnitTest: Move initialization of VisualUnitTest's event listener
(HTML results output) to VisualUnitTest.
  This allows us to properly separate the UnitTest sources from
VisualUnitTest sources as per intended design.

* Introduce necessary logic in the build script to let me handle
optionally building the ScaleX and HQX algorithms without
consequence (to Texture).
  When NOM_BUILD_EXTRA_RESCALE_ALGO_UNIT is enabled, NOM_USE_SCALEX
and NOM_USE_HQX defines are used within the Texture class to somewhat
gracefully handle the condition aborting the attempt and informing the
end-user that the algorithm has not been built into the engine.
SDL2Logger: Revert auto_space concept...
EventHandler: Revert changes made to ::pop_event && ::process_event

The changes made earlier create an infinite loop when there are
no events to be processed (not our intentions). The bug was found
because of the intentional lack of event listening in
VisualUnitTestFrameworkNonDefaultCtorTest.
Experimental revamping of dependencies build system

* Switch back to using cmake's option command for configuring nomlib's
top-level build units.

* Introduce experimental BuildTreeDeps.cmake script; the script simply
ensures that the options chosen have their applicable dependencies
added, without the end-user needing to be aware of the details.

* config.hpp.in: Introduce experimental NOM_USE_SDL2_IMAGE,
NOM_USE_SDL2_TTF, NOM_USE_OPENAL and NOM_USE_LIBSNDFILE
cmake build-time config vars; these are used in examples/device_info.cpp
as an experimental test for the time being.

* Revamp examples/device_info.cpp: Use SDL2Logging facilities for
output and add dumping of library versions for nomlib, SDL2, SD2_image,
SDL2_ttf, OpenAL and libsndfile.
UnitTestTemplate: Use 'using namespace nom' declaration
BuildTreeDeps.cmake: Remove minimum cmake required version
DataViewList: Update event processing code && ::update

* tests/CMakeLists.txt: Disable building of UIWidget tests.
Refactor DataViewList to use item store pointer

By using a pointer to the DataViewListStore object and providing
a getter & setter for it, it allows us to remove the forwarding
method calls to the internal store pointer.

* Introduce ::store getter && ::set_item_store setter.
* Forward declare DataViewListStore.
* Move update_columns & update_items methods to private scope.
* Check for non-NULL item store in ::valid.
* Fix conditional if bug in ::valid; change pos & size check from
OR to AND.

* tests/CMakeLists.txt: Turn gui unit tests back on.
Implement UIStyle for DataViewColumn & DataViewItem

This allows us to use a user-defined font for tree columns nd items.

* UIStyle: Introduce font getter and setter.
examples/device_info.cpp: Fix MSVCPP compile err
Refactor DataViewList to use non-template DataViewItem

* DataViewList: The appropriate rendering object to generate is now
based on the type of stored IDataViewItem object: a) String;
b) Transformable.

* DataViewListStore: Introduce ::set_item_style && ::append_item.
Fix a few issues in Sprite interface

Sprite: Introduce virtual set_position method; this resolves the
long-standing desire to get rid of manually calling ::update.

SpriteBatch: Set the sprite's size to match the current frame in
use; this resolves the long-standing bug involving incorrect size
output.

* Sprite: Remove copy assignment operator; this isn't necessary
because we do not have pointers or custom resource needs.
* Sprite: Remove size method.
* Sprite: Re-declare update under protected scope.

* SpriteBatch: Remove copy assignment operator; this isn't necessary
because we do not have pointers or custom resource needs.
* SpriteBatch: Add virtual keyword to update method.
Patch rendering of decorators in app example

* MessageBox: Call base class (UIWidget) when parent is NULL.
Improve rendering of DataViewList widget

The math still is buggy, but it's a start!

* DataViewListStore: Introduce ::clear method.
* Split implementation of DataViewItem into cpp file.
* DataViewListTest: Clean up DataViewListWidgetEx2 to mimic TTcards
CardsMenuState.
Fix bug with image comparison when running test interactively