Compare Trees analysis

New analysis to compare the edge lengths of two trees that share the
same topology.  This analysis required new code to support enum
parameters whose options are determined at run time (not compile time).

I also had to change the TreeHeatmap View to check for the presence
of an array named "differences".  This is not an ideal solution,
but the alternative would be a significant reworking of the Visomics
framework to allow an Analysis to be able to access its View(s).
rename save/load state to save/load workflow
Move dynamic parameter population code

Relocate the population of our dynamic parameters to a more central
location within our code.  This way it will also be used by our load
workflow functionality as well.  This commit also contains improvements
to voAnalysis::getInputTable().  You can now specify which input table
you want.
Support for multiple inputs to a custom analysis

Some work still needs to be done to handle different types of
tables, but for now this change helps us convert geiger to
custom analysis R scripts.
get tree output from geiger

In addition to the table of model fitting parameters, geiger now
also outputs a tree with adjusted edge weights.
update load/save workflow to handle multiple inputs

Changes to the way we read & write workflow .xml files now that
custom analyses can have multiple inputs.
record analyses in the order they are performed

We now maintain a list of analyses in the order that they were
performed.  This information is used by the save/load workflow
functionality.

Now that we support dynamic parameters, a parameter to an analysis
can actually be a voDataObject.  For this reason, we now have to
be more careful with the order that we perform analyses when we
load a workflow.  Now that we maintain an order list of analyses,
we can be sure that any parameter/input will exist before we
execute an analysis.
voTreeHeatmapView & voGeigerModelFitting improvements

1.  Use voMultiBlockDataSet instead of voMultiPieceDataSet within
voGeigerModelFitting.  This change makes the code cleaner when accessing
the output of this analysis.

2.  Make a copy of the input tree when generating a voTreeHeatmap view
that contains both a table and a tree.  This allows us to have separate
inputs for the dendrogram ("tree only") view and the full tree heatmap
view.

3.  Code changes to allow collapsed subtrees to persist when the user
browses away from the voTreeHeatmapView.
change default data set to anolis tree heatmap
read & write workflows from MongoDB

This new functionality is optional and disabled by default, as
the MongoDB c++ driver is nontrivial to build.
Merge branch 'compare_trees'

* compare_trees:
  read & write workflows from MongoDB
  change default data set to anolis tree heatmap
  voTreeHeatmapView & voGeigerModelFitting improvements
  record analyses in the order they are performed
  update load/save workflow to handle multiple inputs
  get tree output from geiger
  Support for multiple inputs to a custom analysis
  Move dynamic parameter population code
  rename save/load state to save/load workflow
  Compare Trees analysis