[SPARK-4580] [SPARK-4610] [mllib] Documentation for tree ensembles + DecisionTree API fix

Major changes:
* Added programming guide sections for tree ensembles
* Added examples for tree ensembles
* Updated DecisionTree programming guide with more info on parameters
* **API change**: Standardized the tree parameter for the number of classes (for classification)

Minor changes:
* Updated decision tree documentation
* Updated existing tree and tree ensemble examples
 * Use train/test split, and compute test error instead of training error.
 * Fixed decision_tree_runner.py to actually use the number of classes it computes from data. (small bug fix)

Note: I know this is a lot of lines, but most is covered by:
* Programming guide sections for gradient boosting and random forests.  (The changes are probably best viewed by generating the docs locally.)
* New examples (which were copied from the programming guide)
* The "numClasses" renaming

I have run all examples and relevant unit tests.

CC: @mengxr @manishamde @codedeft
Should we have a new Ensembles section in the guide?  It might be pretty short.  (And I haven't seen experimental results in the guide; would they belong elsewhere?)

Eventually, I could imagine either (a) an Ensembles section once we have more ensemble algs or (b) a section in the guide covering all algorithms and how to choose between them.