Make doxygen build always available via 'make docs'

Previously, doxygen builds had to be enabled via cmake option and were
only built once per complete project build (requiring us to do a
complete project rebuild every time we wanted to refresh documentation).
This change was made to improve the workflow involved with previewing
documentation.
Doxyfile.in: Update input list

* Remove TODO.md & add third-party/README.md
Fix several doxygen warnings
Initial refactoring of GUI
Additional GUI infrastructure

* Introduce GUI example app
* Introduce Button, ListBox GUI controls
* Introduce UIEvent & UIEventCallback support classes with experimental event
callbacks for Button & ListBox GUI controls.
Update codebase to reflect API changes from rebasing dev onto branch
examples/app: Remove refactored code before GUI example was created
CMakeLists: Disable all but the GUI example
Introduce DataViewList GUI control
Introduce GIMP exports of VIII & VIII_small bitmap fonts
Disable build units not in use
EventHandler: Fix misfire of SDL_MOUSEWHEEL events

* Fixes a bug where invalid SDL_MOUSEWHEEL events will continiously fire
when nomlib's NOM_DEBUG_SDL2_MOUSE_INPUT preprocessor is enabled. (We've
had this same problem in TTcards, too!)
RenderWindow: Mark copy constructor & copy assignment operator non-copyable
Text: Introduce (experimental) CroppedText feature
UIEvent: Fix compile err (relocation of Value.hpp)
Additional refactoring & additions for GUI codebase

* ListBox: Inherit from Window, use nom::IFont assigned from parent
nom::Window instance.

* MessageBox: Inherit from Window, make nom::Window argument during
construction a pointer.

* Initial work done to have font resources managed by nom::Window class
(subject to change).

* Flesh out DataViewList class; introduce several helper classes;
DataViewColumn, DataViewListStore,

* Introduce an experimental GUI management class, GUIApp.
examples/gui: Rename of a couple methods & add more tabular data

* create_dataviewlist_ex2 -> create_dataviewlist_ex1
* Add third column to create_dataviewlist_ex1

* create_dataviewlist_ex3 -> create_dataviewlist_ex2
examples/gui: Fix positioning of window
DataViewList: Additional refactoring & additions

* Change internal data types in DataViewListStore from nom::Value to
IDrawable.

* Introduce SpriteBatch insertion capability into DataViewList
interface class.

* Introduce initial DataViewList::on_event logic for Text & SpriteBatch
object types.

* Introduce IObject abstract class to aid with IDrawable data type
container held within DataViewListStore; type is used to aid
DataViewList logic at run-time. All IDrawable objects now inherit
IObject.

* Text::type is renamed to Text::font_type in order to make way for
the newly inherited IObject::type method.

  sprite/SpriteBatch:
* Introduce a few convenience typedefs.
* Introduce get & clone methods; used in DataViewList class.

* Introduce resources menu_elements.json & menu_elements.png for
examples/gui.
General clean up; new typedefs, removal of old code, renames, ...

  nom::IDrawable:
* Remove un-necessary header files.
* Introduce typedef 'SelfType'
* Rename type defs 'RawPtr' to 'raw_ptr', 'SharedPtr'
to 'shared_ptr'and 'UniquePtr' to 'unique_ptr'.
* Remove type defs 'SharedDrawables' & 'UniqueDrawables'.

  nom::Window:
* Initialize id_, padding_ variables to zero (0) on construction.
* Check local scoped obj pointers for nullptr before attempting
to use them.

* Introduce constructor for passing IDrawable::raw_ptr object type.

  nom::GrayWindow:
* Initialize class var updated_ to true on default construction.

* Correct class var updated_ initialization when constructing
with a WindowShape object; this was erroneously being set to true.

  nom::MessageBox:
* Introduce typedef 'SelfType', 'UniquePtr' & 'SharedPtr'.

* Initialize class var updated_ to true, enabled_ to false on
default construction, other constructors now initialize updated_
to false & enabled_ to true.