Merge pull request #12 from LambdaSix/develop

Note to self: Merge Develop to Master more often.
Initial work on core of userinterface

Add OctoGhast.UserInterface to SLN
Initial draft of Canvas and Widget classes.

Canvas provides a drawing surface that supports
extra options for colouring and some functions
not present in TCODConsole.

Widget provides a base class to derive controls
from.

A pigment wraps together a foreground, background, and background flag. Stored in a dictionary with
keys for various parts of a control, we can load them in from JSON or something.

Templates provide a way to influence a widgets drawing behaviour,
more framework for themes really.

Add an implicit cast from Color to TCODColor
Switch to using a Pigment type for color selections.

Pigments bind together a foreground, background, and background flag; Allowing
easier passing around of color information.

PigmentMapping provides a way to have a set of pigments with an optional set of
overrides for parts of the UI.

Each UI part is given an entry in the PigmentType enumeration which is used as a
key into PigmentMapping. Controls can use these to draw appropriately.

Also a reformat on Canvas, which slightly obscures the changes for pigments.
PigmentSession is introduced, which provides a simple way to introduce a colour
scope, any canvas operations done from within a PigmentSession will use the passed
pigments, then reverse back to the defaults.
Move Widget into the Controls folder/namespace

Change position to be publically readable.
Add a Pigments property giving the current pigments.
Move WidgetTemplate into it's own file.
A component is a container of events that can be raised on UI elements.

It can also have items scheduled to run after a delay. Or at least the nearest tick
to the delay.
Add several UI components.

The most important being Window which provides a container for other Controls.
A control inherits from a Widget and provides a base to write UI controls on.

A tooltip is a small UI element that can display information with support for transparency.
Lots of changes and a working UI framework ready to expand.

Further commits due to clean up the stuff not being used, in another feature branch.

This adds the basis of the framework for UI controls with the only working control right now,
a magical Button.

The API will be cleaned up soon, some of the interaction between the core and the ui assembly are
a bit hacky and need to be replaced with something cleaner. Like Config needing manual setup.

This also introduces an Application framework, which makes it simple to dispatch events around to
make everything work.
Renamed Control to ControlBase
Move Window and Widget from Controls/ to Core/

Also apply renaming for Control -> ControlBase
Add CheckBox control.

A control that has a state that can be toggled by the mouse.
Add Text Entry control and supporting class

Allows the user to type text into a control with events raised
when the control values have changed.
Pull some common template properties up to the base

They existed independently in a few control templates, just pull them up to the common ancestor.
Implement a list control
Rename HilightWhenMouseOver to match MouseOverHighlight from Template

Oversight that they got different names despite being the same thing.
Add a Menu item.

Like a ListBox but removes itself after a selection.
Document document
Add a Panel control
Move IColor into common data structures
Merge pull request #15 from LambdaSix/Feature_UserInterface

Merge to develop.
Merge pull request #16 from LambdaSix/master

Merge master to develop