qmake: libdeng2 no longer links with QtOpenGL

The libdeng2 library is not intended to contain any GUI functionality,
and therefore it does not need OpenGL. The client will configure
QtOpenGL on its own.
Shell|Unix: Added a stub for the text mode shell interface

The text mode shell will be implemented on curses and therefore is
for UNIX platforms only. Windows systems can use the GUI interface.
Shell: Basic curses setup with terminal resizing support
Shell: Added text canvas classes for text-based drawing
Fixed: Unused function warnings

The startFrame/endFrame functions are only needed in a client build.
libdeng2: Added equality operators for integer vectors

Unlike floating point vectors, integer vectors have unambiguously
defined equality.
Shell|Curses: Basic key input handling
libdeng2: Imported Hawthorn code

Added Rectangle, Clock, Animation, rules, Widget and RootWidget.
libdeng2: Cleanup
Shell: Renamed the curses shell target
Shell: Set up framework for curses-based shell app

Started work on building a shell app. The UI is based on the same
libdeng2 UI widgets that will act as the foundation of the client's
graphics UI.

Added a curses-specific TextCanvas, a widget class for widgets drawn
on a TextCanvas, a RootWidget class that owns a TextCanvas, LogWidget
for the server's message history, and ShellApp that will set up a shell
connection and create the UI widgets.
libdeng2|Math: Added de::floor() function
libdeng2|Refactor: One global Clock instance can be set as the appClock
libdeng2: Added more methods for de::Rectangle<>
libdeng2|Widgets: Refining the layout rules implementation

The Rule class hierarchy provides tools for specifying dynamic
mathematical expressions (e.g., for widget layout). The implementation
is still rather rough, though.

Todo for later: Rules are rather powerful, but there is also need for
a (higher-level?) mechanism where parent widgets can lay out child
widgets according to some principle (list, grid, etc.). In practice,
it can build on the Rules. In any case, manually constructing complex
rules is a bit arduous.
libdeng2|Widgets|Fixed: Added missing destructor for RectangleRule
libdeng2: Use the convenience typedef TimeDelta

Instead of spelling out Time::Delta.
Shell|libdeng2: Working on rules

Todo: Rule dependencies and ownership need to be reference-counted.
libdeng2: Added de::refless()

de::refless() is a function to be used when allocating new reference
counted objects. It removes the default +1 reference count of the
new object, with the assumption that a reference is taken by someone
else soon afterwards.
libdeng2|Refactor: Rules are reference-counted

Simplified the lifetime and ownership management of rules by applying
reference counting.

Also added functions de::holdRef() and de::releaseRef() for more
convenient/safer reference holding and releasing.