config.hpp: Use enhanced assert facilities provided by SDL2

* This makes the NOM_ASSERT macro expand to using SDL_assert
when NOM_USE_SDL2_ASSERT cmake var is set (see cmake/platform.cmake),
which is now set to TRUE by default.
Clean up of project's auto-generated header file version.[cpp|hpp].in

* CMakeLists.txt: Remove auto-generation of version.cpp.in file.
* src/CMakeLists.txt: Remove auto-generated 'version.cpp' file from
sources.
* Rename include/nomlib/config.hpp to cmake/templates/config.hpp.in --
include/nomlib/config.hpp is now an auto-generated cmake file, and
therefore has also been removed from the repository's file cache.
* cmake/templates/version.hpp.in: Remove vars PLATFORM_ARCH_64_BIT,
NOMLIB_INSTALL_PREFIX && NOMLIB_BUNDLE_IDENTIFIER. (These variables
are not used, nor necessary!)
* cmake/templates/version.hpp.in: Relocate <string> header file
inclusion to types.hpp && cmake define NOM_USE_SDL2_ASSERT to
cmake/templates/config.hpp.in.

* types.hpp: Simplify the type definition of 'ulong', including the
static assert checks.

* SpriteSheet: Remove inclusion of nomlib/version.hpp header file; not
necessary as we already included nomlib/config.hpp.

* .gitignore: Remove version.cpp & add config.hpp to ignore filter.
SublimeText project file: Ignore file 'config.hpp'

* config.hpp is auto-generated by CMake now, so we need to refer to
config.hpp.in instead (this is an enforced reminder for me).
config.hpp.in: Introduce C macros NOM_IGNORED_VARS && NOM_IGNORED_ENDL.
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.
Fix compile errs resuling when NOM_BUILD_JSON_UNIT is turned off
CMakeLists: Distribute default set of fonts with nomlib.framework

(This is from the feature/GUI branch, SHA 968d35b).
File: Introduce directory iteration methods

* File: Change IFile pointer type from shared_ptr to unique_ptr.
* UnixFile: Introduce is_dir, read_dir methods.
* WinFile: Implement exists, is_dir, read_dir methods.
types: Fix MSVCPP compile err
scripts: Rename dir to bin
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.
Add UnitTestTemplate.[cpp|hpp] to sublime project file
config.hpp: Include nomlib/platforms.hpp

This allows us to not deal with the consequences of forgetting to
include this header file when we use NOM_PLATFORM macros.
Consolidate ResourcePath interface (to nom::File)

* system/osx/ResourcePath: Relocate functions to UnixFile.
* system/windows/ResourcePath: Relocate functions to WinFile.

* File: Introduce resource_path, user_documents_path and
user_app_support_path methods.

* Path: Move value_type typedef inside class declaration.
* Path: Introduce prepend method.
tests/Makefile: Rename to prevent future name collisions
tests/CMakeLists.txt Fix exec of tests under WindowsOS

* Copy dependency libs over to the executable's dir
CMakeLists: Change toggling of build units from option to set var

This lets us toggle the variables without doing a complete project
rebuild each time; forces CMake to not cache the state.
Fix compiler err with third-party inclusion in outside-project builds

This affected building TTcards on Windows and effectively corrects
what was a temporary patch done out of haste. By using forward
declarations of the third-party libs used in nomlib, outside-project
builds (TTcards) does not need to know anything about the location of
third-party header files when including nomlib's header files.
Move SDL.h header file to private declarations in source
Introduce ResourceCache & Font interface

* ObjectCache: Removal of class

* Text: Use nom::Font interface; using nom::IFont is no longer
supported.
* Text: Clean up ::set_font methods (point size is now done in
::set_text_size).

* MessageBox: Introduce more efficient setters for the title & text;
these new setters update the existing nom::Text object instead of
initializing a new one.

* SDLApp: Rename SharedPtr typedef to shared_ptr.
* SDLApp: Utilize FontCache by initializing several fonts at
construction.
* SDLApp: Introduce Hints enum (flag-based initialization of features).
* SDLApp: Introduce getter & setter for app_state class var.

* examples/fonts: Use new FontCache feature.
* examples/fonts: Add ability to rescale second TrueType font that has
been added to test FontCache functionality.

* examples/app: Use TrueTypeFont's new glyph caching feature.
* examples/app: Use nom::Font class.
* examples/app: Use MessageBox's new (more efficient) setters.
* examples/app: Add mouse wheel input (up, down) for changing the
font's point size.
* examples/app: Change modifier from KMOD_LGUI (Windows/Command) key
modifier to LCTRL.

[SQUASHED] TrueTypeFont: Fix glyph caching feature

Enabling glyph caching was easy; adding a check for an existing page is
all we had to do.

* IFont: Introduce self_type typedef.
* IFont: Add ::hinting, ::metrics, ::set_hinting, ::set_outline and
::load methods as required interface methods.
* IFont: Remove IFont::FontType::UserDefined.

* BitmapFont: Introduce self_type typedef.
* BitmapFont: Change return type of ::clone to IFont::RawPtr -- was
IFont::SharedPtr.
* BitmapFont: Add const keyword to ::newline, ::kerning, ::metrics.
* BitmapFont: Remove use_cache argument from ::load.

* TrueTypeFont: Change return type of ::clone to IFont::RawPtr -- was
IFont::SharedPtr.
* TrueTypeFont: Introduce ::hinting & ::set_hinting.

* TrueTypeFont: Add const keyword to ::newline, ::kerning, ::metrics.
* TrueTypeFont: Remove use_cache argument from ::load.

* FontPage: Introduce copy constructor.
* FontPage: Introduce ::valid.

* FontMetrics: Add (face) name field.