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.