Begin work branch revise-texture-animation

Objectives:
- Realize material_t as a C++ class
- Interpret id Tech 1 flat and texture animations with material's
  layer stage animation mechanism
- Link the names for all frames in an animation to one material
  (retaining the frame's sequence offset if used directly on a map)
Refactor: Moved type definitions for material_t to material.h

material_t is no longer defined using mapdata.hs
Moved struct material_s to material.cpp

Plus some minor cleanup.
Refactor|Material: Use QList for Material's list of variant instances

Plus more cleanup refactorings.
Fix typo
Refactor|Material: Replaced Material's variant iteration mechanism
Refactor|Material: Moved Material variant selection logic to Material_ChooseVariant()
Cleanup
Refactor|Material: Removed Material_AddVariant()

Material variant creation and selection is now fully encapsulated
within material_t.
Materials: Separate material precache group functionality

Previously the animation group mechanic was dual purposed for both
material animation and group precaching. There is now a separate
grouping system which is currently used solely for precache groups.
Cleanup
Materials: Cache all materials in a given group at once
Cleanup material.cpp dependencies
MaterialVariant: Renamed MaterialVariant's Layer as LayerState

The name "LayerState" better documents the purpose of this data.
Material: Implemented Material_IsAnimated()

Returns true if the material is animated using either the layer-stage
method or the older anim group method.
Refactor|Material: Material encapsulates logic to determine has-decorations state

Although we must presently prepare a variant in order to answer this
question, the user should not care about this (soon to be addressed)
implementation detail.
Disabled group-based method of material animation

We will soon be switching to the stage-based method for animating
all materials.

Define LIBDENG_OLD_MATERIAL_ANIM_METHOD to reinstate support for
this method of material animation.
Materials: Generate material layer animations from texture anim groups

Beginning to flesh out the new staged based mechanism for material
animation.

Interpret the game-registered texture anim groups when generating
materials from/for original game textures, reconstructing their
animations in terms of material's layer stages.

Todo: Implement interpretor logics for legacy group animation defs.
Todo: Reimplement smooth texture animation.
Todo: Reimplement support for flags such as PGF_GROUP.
Todo: Cleanup
Materials: Per-context animation states

Completed plumbing work to allow each material variant instance to
be animated independently, according to their usage context. Among
other things, this now means that materials used with UI displays
(such as the control panel and console) are no longer paused when
the client pauses the game.

Plus minor cleanup.
Refactor|MaterialVariant: Minor MaterialVariant cleanup refactorings