libgui: Added TextureBank, a very simple atlas-based bank for images

Allocates images on an AtlasTexture so they can be efficiently and
easily shared by many users for drawing.
Cleanup|libgui: Use as/is methods for casting
Fixed|libdeng2: Compiler warning in release build
Fixed|libdeng2|Bank: allNames() should return dotted paths
Fixed|libappfw: Don't draw a popup with zero surface area
libappfw|GuiRootWidget: Use a TextureBank for common UI textures

While the UI images are still stored in an atlas as before, a Bank
is smarter with managing the allocations: only the needed images
are allocated, and multiple instances of widgets can easily share
the same textures.

For instance ProgressWidget was a big offender in allocating the
wheel/gear textures separately for each instance.
Optimize|libdeng2|libappfw|libgui: Performance and memory tuning

This commit makes several small optimizations:
- Animation avoids making copies of Time instances.
- PathTreeNode avoids making String copies when matching names.
- Time prefers the simple "high performance" time values internally,
  if both kinds available.
- Widget uses a simpler method to find the root widget (less dynamic
  casts).
- VertexBuilder pre-reserves 128 vertices to avoid repeated
  reallocations of the buffer when composing geometry.
- ProgressWidget does not recalculate geometry if the widget hidden.
Unix|libdeng2: Make backtrace printer available in release builds, too