Input subsystem refactoring; see log for details

  - nom::SDL_App
* Remove SDL_App::enableKeyRepeat method; SDL_EnableKeyRepeat function has been
phased out entirely SDL2's new event subsystem, and is now taken care of for us
automagically.

  - nom::Input
* Introduce Drag'N'Drop event support via SDL2 API

* Implement preliminary support for the new SDL_WINDOWEVENT_CLOSE event; this
fixes the bug Ivan noticed that results in no action being taken on a window close event.

* Add an argument for passing along the new event struct data 'windowID' along
with several existing events: keyboard & mouse (motion, buttons). This opens the
doorway for mapping an event with a particular window.

* Implement changes to support SDL2 mouse wheel events.

* Add preprocessor defines for enabling sections of the input subsystem (for
debugging aid).

  - examples/app
* Fix the window icon not being set for all three windows under the Windows
platform.

* Fix the window title display text; show the actual window_id instead of the
index count of the array we use for holding the windows.
Use nom::DialogMessageBox for init err message
Nothing to see here, move along...
Introduce set_colorkey method & rename getSize method to size
Copy alpha component from SDL_Color (introduced in SDL2)
Large-scale refactoring of Texture class (SDL2 conversion, renames, etc.)

  * Reflect API changes within Texture class for BitmapFont, Sprite
and SpriteBatch classes.
Rename Image::get to Image::image
Use SDL_GetError() / IMG_GetError instead of custom err messaging
Add TODO comments
Clean up Point2 template class a bit & introduce << operator overload

* Use initializer list for default Point2 constructor
* Add missing iostream header file dependency
Refactoring of nom::SDL_App, nom::Window & examples/app

  - nom::SDL_App
* Remove isFullscreen & setFullScreen methods; remove fullscreen
instance variable.

  - nom::Window
* Re-implement the fullscreen flags previously found in SDL_App; this is
done out of necessity, since we are not limited by a single window
anymore.

* Introduce toggle_fullscreen method
* Introduce size getter method
* Introduce draw method

* Fix the setting & caching of our window_id_ & window_display_id_
variables.

* Introduce pixels and save_screenshot methods; these are not currently
working and notes have been made as to why along with commenting said
methods out.

  - examples/app
* Use the new nom::Window fullscreen methods and implement checking for
window_id so we have working fullscreen toggle that is based on the
current window that has focus.

* I also introduce using set_viewport here so that when fullscreen has
been activated, it upscales the contents of the window for us.
Refactor work on nom::Texture class

* Refactor constructor for SDL_Surface* type for SDL2 support
* Introduce initialize method for SDL_Surface* type
* Introduce draw method for Window objects
* Refactor load method for SDL2 support
Move FrameStyle enum from inside the class to outside
Refactor work on nom::TrueTypeFont to get it up and going with SDL2

* This class is still very ... fragile! But is working OK as long as you
can live with static text :) It doesn't yet like to update...
Refactor work of examples/app

* Clean up APP_NAME constant to better reflect what it is as well as the
formatting of the window title text.

* Use nom::ui::MessageBox class (which combines several classes as noted)
* Use nom::Texture (for a static background image we load)
* Use nom::TrueTypeFont

* Lots of other clean up -- resulting in an example that is almost
presentable!