Client: Relocated widgets to their own source subfolder under "ui"
Refactor|libshell|libdeng2: Added MemoryLogSink, used it in shell::LogWidget
Refactor|libshell: Separated text editor base class (AbstractTextEditor)

The abstract logic of a text editor is now placed in a class of its
own so it can be reused in the client's GUI.
libdeng2: Cleanup
libshell: Cleanup
Refactor|libshell: Moved MonospaceLineWrapping to its own source file

Also, some minor cleanup.
Fixed|libgui|Font: Measuring text is a const operation
Refactor|Rule: Added valuei() for accessing value as integer

Rules are floating-point, but in many cases it is more convenient
to query the value as an integer.
Fixed|libdeng2|Bank: Handling a failed load attempt

The semaphore must always be posted or the loader would wait forever.
Cleanup|Bank: By default Bank items have no size

The assumption is that by default the cache is limited by number of
items rather than their size.
libgui: Cleanup
libgui|GLTexture: Querying the maximum allowed texture size
libgui: Added GLShaderBank

Bank for storing shared GL shaders and building GL programs out of them.
Client: Load shader definitions, automatic GuiWidget initialization

GuiRootWidget also owns a large atlas for all UI images.
Refactor|libdeng2|libgui: Bank uses DotPath ('.' separators) for identifiers

Due to the close relationship (Info)Bank has with scripting/Record,
it is better to default to dots ('.') as the separator for item
identifiers. The separator can still be explicitly set, though, to
any character.
Tests|GLSandbox: Updated for DotPath, source folder name
libdeng2|Rectangle: Added shrunk() and an inequality operator
libdeng2|Widget: Added widget deinitialization method
libgui|Font: Rasterizing a line of text onto an image
libgui: Cleanup