Major changes to DecisionTree API and internals.  Unit tests work.  Still need to update documentation.

Split classes:
* DecisionTree --> DecisionTreeClassifier and DecisionTreeRegressor
* DecisionTreeModel --> DecisionTreeClassifierModel, DecisionTreeRegressorModel
* Super-classes DecisionTree, DecisionTreeModel are private to mllib.

Included print() function for human-readable model descriptions
* For: DecisionTreeClassifierModel, DecisionTreeRegressorModel, Node

parameters (used to be named Strategy)
* Split into: DTParams, DTClassifierParams, DTRegressorParams.
* Added defaultParams() method to DecisionTreeClassifier/Regressor.
* impurity
** Made private to mllib package.
** Split Impurity into ClassifierImpurity, RegressorImpurity
** Added factories: ClassifierImpurities, RegressorImpurities
* QuantileStrategy: Added factory QuantileStrategies
* maxDepth: Changed meaning by 1.  Previously, depth = 1 meant 1 leaf node; now it means 1 internal and 2 leaf nodes.  This matches scikit-learn and rpart.

train() functions:
* Changed to use DatasetInfo class for metadata.
* Eliminated many of the static train() functions to prevent users from needing to remember the order of long lists of parameters.

DecisionTree internals:
* renamed numSplits to numBins (since it was a duplicate name)