Changed inheritance-ready properties from Widget.

This is to prepare for the new composition-based object model.
Added Widget::write and associated methods.

This is a simple write-string-to-screen method.
Modified Label to use composition rather than inheritance.
Restricted the size-capabilities of Label.

It now has to follow a size defined by its input string. It is no longer
possible to specify a different size than what the object itself calculates.

For cases where such features are needed, more classes will be added later.
Removed Child feature from Widget.
Added get_widget() to Label. Removed Label destructor.
Added missing Widget constructor.
Implemented free helper functions.
Changed all Label's constructors. Changed parameter order system.

The change in parameter order is simply always expecting the parent widget (if
any) first. This way we can avoid having to deal with complex template
inspections.

Implemented proper overloaded and var-templated constructors for Label.
Introduces the clear()-option to the Widget class.

This simply clears the screen the Widget manages.
Introduces the Textfield class.

This is a more basic, primary widget that can be used to draw more complex
ones.

By itself it does not expose much logic or rules; rather, it can be considered
a canvas to draw other widgets on. The old label has been updated to use this
as a component and instead inforce its own rules an interface upon the
Textfield.
Renames BorderPrototype to BorderStyle. Fixes errors with border destruction.

The new name more accuractly describes what this object is and does. In
addition, allocation and deallocation process for Borders has been improved; it
now properly removes old borders when going out of scope, as well as being able
to replace borders during runtime if and only if it is in a window that already
has allocated room for borders.

This, as a necessity, introduces the Border::set method. Some refactoring came
as a consequence, where the logic in a Border constructor was moved out into a
static method to be reused in the set method.
Changes Geometry and Anchor to be able to account for border offset.

As the border is an internal part of a window, special care has to be taken
during construction. The Widget is only exposed to the usable canvas, and this
data is registered in the object.
Introduces the Format (family) of classes.

The "family" is implemented through the templated Format class. This take the
same bitmask as the ncurses attron and provides scoped reset for the given
window.
Changed naming scheme for Application options. Introduces cursor option.
New features for drawing on the Widget canvas.

These are parts of the interface that allows arbitrary content to be drawn on
the canvas. The Widget object itself handles absolute positions on screen, and
provides a logical canvas to work on.
Introduces the Button class.

This is an object that associates some actions with a label. Actions include
appearance change when focus are toggled as well as a function called whenever
the button is triggered.

This requires Label::redraw to also call write on the underlying Textfield; it
can never be sure that nothing has changed.
Changed implementation of widget to use std unique_ptr instead of homegrown.

This is a move to simplify Widget's implementation a tad. This also removes the
need to explicitly implement all functions towards ncurses twice; once
externally and once internally. In addition this now uses a standardized and
probably safer implementation of a RAII-style unique pointer. Requires a custom
deleter, which is private within Widget.

Updated all Widget method calls to support this.

An added gain with this model is out-of-the-box movability; as unique_ptr
implements a move constructor, it automatically makes Widget a bit richer as it
opens for being moved as well.