preserve FieldData when pruning a tree

Previously any FieldData stored in the input tree was not
transferred over into the output tree.

Change-Id: Ie8c980ec3bd893dbc45a6341e3c5f2cec370a283
new function: ComputeFontSizeForBoundedString

* new function to automatically determine the right size font to fit
  some text within some specified bounds.

* The documentation for ComputeStringBounds said "This function does
  not take account of the text rotation".  This is incorrect; text
  rotation actually does impact the bounds returned by this function.
  This commit removes the false statement from the documentation for
  this function.

Change-Id: I864973c054ba1ab28bebac488a5c5844fa74e734
refactor vtkTreeHeatmapItem into three classes

Dendrogram functionality has been moved to vtkDendrogramItem
and heatmap functionality has been moved to vtkHeatmapItem.
This makes it easier for us to arrange dendrograms & heatmaps
as we see fit within a context scene.

vtkTreeHeatmapItem now contains an object from both of these
new classes.  The vtkTreeHeatmapItem still handles some interaction
between these two objects.  For example, when a subtree is collapsed,
the vtkTreeHeatmapItem tells its heatmap to hide the rows that
correspond to the newly pruned leaves of the dendrogram.

This commit also adds the concept of orientation to all of these
classes.  For example, this allows us to draw heatmaps or dendrograms
"upside down" or "backwards" (relative to their default orientation).

Change-Id: Ibf3f6180c7f5a6806e4d8282e76e01e21258c8d8
new class: vtkTanglegramItem

As of this commit, we can render tanglegrams within VTK.  A tanglegram
consists of two dendrograms with lines drawn between some of their
leaf nodes.  These lines indicate connections or correspondences
between the two trees.  Tanglegrams are useful for viewing
cospeciation data.

Change-Id: I54dbb655f0935b505941978877766d87c48b13d0
update tests & baselines

* Rename some tests to more closely reflect the classes that they are
  exercising.

* Update some tests & baselines so that the items are better centered
  & scaled within the render window.

* Add a test for the new vtkTanglegramItem class.

Change-Id: Iea71bc5cc806fead23bba7cc4b9e9d6971309b55
various minor improvements to tanglegrams

* Change the format of the correspondence table to be a matrix.
This change allows us to use a vtkLookupTable to assign different
colors to the tangles.  Previously, all tangles were drawn using
a single color.  TestTanglegramItem and its baseline have been
updated to take advantage of this new feature.

* Make the tangles line up evenly on both ends of the tanglegram.
We use a dotted line to connect tangles to their labels.

Change-Id: I01d1bd3fe5d9717fc503ca134a79b603f6771b57
various minor improvements to vtkTanglegram

Change hardcoded font values to ivars.  Minimum visible font size
defaults to 8.  Dendrogram labels are by default 4 pts larger than
vertex labels.

Bug fix for the case where tangles are drawn and the dendrogram leaf
nodes labels are not.

Document our use of a priority queue within ReorderTreeAtVertex()

Change-Id: Iaf884d9b9c1f6888432958cda1229e611d55ac4b
Merge topic 'tanglegram' into master

8bb5d5f8 various minor improvements to vtkTanglegram
2e85c7cd various minor improvements to tanglegrams
dda53180 update tests & baselines
bd266aab new class: vtkTanglegramItem
3ea80450 refactor vtkTreeHeatmapItem into three classes
ab999619 new function: ComputeFontSizeForBoundedString
8a4c60bb preserve FieldData when pruning a tree