[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
We communicate a fixed amount of data for every node in the tree which we eventually train.  Increasing maxMemoryInMB will increase the number of nodes we train in each iteration, but it doesn't change the overall amount of communication required (ignoring overhead for very small maxMemoryInMB).  Once we're training a fair number of nodes in each iteration, the overhead (making a pass over the data + latency in communication) becomes small relative to other costs (computing stats + communicating stats).  Once the overhead is small, then training more nodes per iteration doesn't help much.  This is what I've observed in tests, at least.