libgui: Added ModelBank

Loads model files using background tasks, as they may contain large
amounts of geometry and preprocessing tasks may be involved.
Client|Renderer: Added ModelRenderer to oversee GL2 model rendering

Work in progress: ModelRenderer owns the ModelDrawable instances
needed for drawing objects using 3D models. All available models are
loaded into memory when the assets become available. GL resources will
be allocated later, when the models need to be drawn.

"net.dengine.client.testmodel" contains a couple of test models for
development purposes.
Refactor|libgui: Model animation state is a class of its own

ModelDrawable::AnimationState contains information about which
animations are currently running and what is their current time.
Fixed|GLSandbox: Updated model animation

Also fixed a toolbar issue that was occurring with Qt 5 on OS X.
Cleanup
Refactor|API|Thinker: Base thinker relocated to libdoomsday

Removed the 'inStasis' member of the base thinker struct with a set of
flags. Thinker_SetStasis() was moved out of the Thinker API to
libdoomsday. The Thinker API version was bumped.

Also added a C++ wrapper for managing a POD thinker. This is the
first step toward a C++ thinker class hierarchy. The wrapper handles
ownership of the new private thinker data instance, and will be used
for duplicating and copying thinkers. The wrapper supports both
standard and memory zone allocations.
libdoomsday|Thinker: Cleanup

No need to expose flags via the delegates, no old C code uses this.
Fixed|libdoomsday|DED: Discarding definitions while parsing

The "dummy" instances were not being released as the new design
requires.
Merge branch 'master' of ssh://github.com/skyjake/Doomsday-Engine into gl2-models
Merge branch 'master' into gl2-models
libdoomsday: Added ThinkerT template and improved functionality

Modified the base thinker_s to prevent plain copying and assignment.
Naturally this only has an effect in C++ source files, though.

The ThinkerT template is used to specialize the Thinker smart pointer
for a specific type of thinker.
Refactor|Server: Use ThinkerT in the server delta pool

The delta pool will not have to worry about the private data pointers,
as the pool itself needs to be reimplemented to cooperate with DMU.
Therefore the pool can continue taking a straight up copies of mobjs.
Refactor|Client: Added MobjThinker and applied ThinkerT

MobjThinker is a specialized ThinkerT that uses the game's mobj size
for the thinker. This is now used by the client's delta processor and
sound emitters for line, plane and sector.

MobjThinker is also used for allocating new mobjs. The private data
of a mobj is created JIT before the mobj thinks for the first time.
The private data is freed after the thinker is removed from the map,
or when the map is destroyed.

Debug: Since there is no actual private data yet, a simple DebugCounter
object is used to keep tabs on all the private objects, to make sure
they are all created and deleted appropriately. This will be replaced
with a private data object constructed by a factor.
Refactor|All Games|libcommon: Use ThinkerT for allocating and copying thinkers

Todo: There may be more instances of copying in the C sources, must
look for those and/or convert everything to C++.
Documentation|Fixed: Doxygen markup errors
libdoomsday: Added ThinkerData and MobjThinkerData

Base classes to be used for all private data of thinkers. The lowest
base class provides a Doomsday Script namespace, while the mobj-specific
one contains common internal functionality shared by the server and
the client.
Refactor|Client: Client-specific private mobj data

Removed ClMobjInfo and ClMobjHash. The mobj's client-specific network
state is now stored as an optional component of the client's private
ClientMobjThinkerData.

ClMobjHash was replaced with a QHash. Similarly, Thinkers now uses
a QHash to look up mobjs by ID.
libdoomsday|Thinker: Deletion audience and helper macros
Refactor|Client: Simplified handling of remote mobjs

The so called "clmobjs" are now handled like regular mobjs. The only
difference is that they have a NetworkState present in their private
data.

Cleaned up the way mobjs are deleted, since clmobjs no longer need
special handling.

Map uses observers to remove mobjs from the client mobj hash.
Refactor|libdoomsday: Setting the pointer from ThinkerData to the thinker

It is no longer required to give the thinker pointer when constructing
a ThinkerData instance.