Set strides explicitly in ShaderProgram attribute methods.

Change-Id: I780c7ca7570b656158a83621391c00e7a91b2650
Add a multipass rendering strategy.

Render opaque, then translucent, and finally overlay drawables.

Change-Id: I7025c14be5d5b73d0a11373d6494ac4541e98724
Add text rendering support.

Text rendering is implemented as two drawables:
* Texture2D: Handles rendering a 2D texture to a quad
* TextLabel: Subclasses Texture2D and builds a texture representing
  a string.

These classes are customizable by swapping strategies. Two
strategy hierarchies are used: TextRenderStrategy for generating
the textures, and QuadPlacementStrategy for texture positioning.

Currently, only QtTextRenderingStrategy is implemented using
QImage and QPainter. When the VTK widget matures, the vtkTextRenderer
interface can be used to implement a VtkTextRenderStrategy.

There are three QuadPlacementStrategy implementations in this
commit:
- AbsoluteQuadStrategy: Generate a quad from:
  - an anchor point
  - vertical and horizontal alignment to the anchor point
  - a normal direction, and
  - an up direction.
- BillboardQuadStrategy: Same as AbsoluteQuadStrategy, but always
    use the direction pointing out of the near plane as the normal.
    Optionally adds offset to the anchor point in the direction of
    the normal.
- OverlayQuadStrategy: Same as BillboardQuadStrategy, but uses an
    anchor point that is a fraction of the viewport width and height,
    and produce a quad that is suited for rendering in the
    OverlayPass.

Change-Id: Ib892859a4d24d588ee8ae2af374f504c5c43666c
Add AbsoluteOverlayQuadStrategy.

This allows overlay rendering to a specific pixel location, rather
than using a fraction of the viewport to position the quad as in
OverlayQuadStrategy.

Change-Id: If7f09b97f98113c586621fcc7c85dd1d5fdab3c9
Add measurement tool.

This roughly reimplements the clickmeasuretool from Avogadro 1.x.

Added ToolPlugin::draw(GroupNode) method so that tools can markup
the scene.

Change-Id: Ifee6abd9f24b3e669c0ed90d05180261e5800a8a
Merge topic 'text-overlays' into master

184416c3 Add measurement tool.
185172ae Add AbsoluteOverlayQuadStrategy.
ee7bce0e Add text rendering support.
71ef4509 Add a multipass rendering strategy.
25b47793 Set strides explicitly in ShaderProgram attribute methods.