Fix gradient margins bug
Refactor UI code to use libRocket GUI

* CardsMenuState: The class has been fully rewritten to support
libRocket's datagrid features; a much cleaner codebase results. Mouse
input controls have been implemented.

* ContinueMenuStateCursor: Rewritten class to support more than two
positions.

* config.hpp: A large portion of the antiqued coordinate origin
calculations have been replaced (obsolete) by data-driven RML & RCSS,
thanks to libRocket!

* CmakeLists.txt: Add libRocket dependencies.
* third-party/README.md: Refer to nomlib's sf.net project files page
for dependency files.
* Remove CardsMenuStateCursor.cpp.
Fix state crashing bugs

These two bugs have existed long before the GUI branch.
Implement confirmation dialog for CardsMenuState
Rename ContinueMenuState & Cursor source files

ContinueMenuState -> ConfirmationDialog
ContinueMenuStateCursor -> DialogCursor
Declare applicable class dtors virtual

This does not resolve a *known* issue, but is just waiting to bite
me in the ass if it hasn't already...
Use std::unique_ptr for audio obj pointers

I had forgotten to free these before...
Fix another state crashing bug

* This is related to the recent bug fix SHA#a26c9a6
Initial game logic for multi cards of same type

* Card: Introduce getter && setter for num_ var.
* cards.json: Add num field.

* CardHand: Remove check for existing card (based on ID); this allows
duplicate cards to be placed in the player's hand, thus allowing
me to start developing this new functionality.

* CardsDataSource: Implement necessary logic for updating the cards
model in regards to the card availability / numbers.

* config: Remove MIN_COLLECTION const var; what's the point???
* debug: Introduce several new logging categories for individual game
states.
Use non-build dir path for libRocket's fs root path (run-time cfg)

* Use Resources dir from project root instead of app bundle path
for reloading cfgs from (RML, RCSS).

* Introduce bin/fswatch.sh for automatic copying of
Resources/config.json to Documents/ttcards/config.json for us.
Finish game logic for non-'open' ruleset (face down cards)

Card: Introduce getter & setter for boolean face_down var; this has
been moved from CardView, which had a very broken implementation of it.
This also removes the use of it in the Player class.

CardHand: Introduce ::set_face_down convenience method.

* GameConfig: Introduce ::string_array method; this allows us to add
an array-based ruleset config var to config.json (REGION_RULESET) for
this feature commit.
GameOverState: Re-enable wrong cursor audio clip
Bit of UI tweaking for height of msg box
Misc improvements / clean up

dataview.rml: Adjust the color of grayed text (darkened).
Bit of clean up on elemental rule code
Fix game crash
New config.json cfg options && update sprite sheets

* Update all sprite sheet files and images to reflect v0.4.0 file
format spec introduced in nomlib (see SHA d95e631). In short, all
the sprite sheets are now created using TexturePacker.

* config.json: Introduce RENDER_SCALE_QUALITY cfg parameter.
* config.json: Remove CARD_BACKGROUNDS cfg (hasn't been used in some
time).
* config.json: Introduce cfg parameters for sprite sheet file paths.
* config.json: Remove SCALE_ALGORITHM; run-time rescaling is no longer
used.
Introduce vastly improved rendering of the game

This does proper rescaling of game resources, which **especially**
makes a difference when full-screen. No more jagged anti-aliased
TrueType fonts, w00t!
  This puts us back on mark from the long-ago SDL1 branch in terms of
our rescaling rendering capability.

* config.json: Change RENDER_SCALE_QUALITY default to 'nearest'; this
improves the rendering of card faces by not anti-aliasing the edges
of the pixels.

* Game.cpp: Remove 'loading screen' rect / text; this hasn't been used
since the move over to SDL2.

* config.json: Remove INFO_FONTFACE && INFO_SMALL_FONTFACE cfg options;
these are no longer used (libRocket only supports TrueType fonts).

* config.json: Remove MENU_ELEMENTS cfg options; these are no longer
used -- these are now loaded through the libRocket interface.
GameConfig: Wee bit of clean up

* Remove save method.
* Introduce support for boolean and object cfg types.
Fix cursor positioning bug in CardsMenuState

This damn bug that presented itself only when SCALE_FACTOR == 2
boils down to a rounding err that accumulates in the cursor positioning
offset map. By carefully modifying the value in dataview.rml to result
in a non-fractional value, the problem is resolved.