Introduce scripts/new_class.sh

Helper script for copying template files over to the
appropriate header & source directories.
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.
Text: Bit of clean up

* Initialize position & size of base class to Point2i::null,
Size2i::null (respectively). This was the original intention.

* Use set_font method for the font_ resource var managing when
the copy constructor or copy assignment operator is called.
Introduce stub files for class object DataViewBitmapColumn