[SPARK-4486][MLLIB] Improve GradientBoosting APIs and doc

There are some inconsistencies in the gradient boosting APIs. The target is a general boosting meta-algorithm, but the implementation is attached to trees. This was partially due to the delay of SPARK-1856. But for the 1.2 release, we should make the APIs consistent.

1. WeightedEnsembleModel -> private[tree] TreeEnsembleModel and renamed members accordingly.
1. GradientBoosting -> GradientBoostedTrees
1. Add RandomForestModel and GradientBoostedTreesModel and hide CombiningStrategy
1. Slightly refactored TreeEnsembleModel (Vote takes weights into consideration.)
1. Remove `trainClassifier` and `trainRegressor` from `GradientBoostedTrees` because they are the same as `train`
1. Rename class `train` method to `run` because it hides the static methods with the same name in Java. Deprecated `DecisionTree.train` class method.
1. Simplify BoostingStrategy and make sure the input strategy is not modified. Users should put algo and numClasses in treeStrategy. We create ensembleStrategy inside boosting.
1. Fix a bug in GradientBoostedTreesSuite with AbsoluteError
1. doc updates

@manishamde @jkbradley
Here are my findings. I added two more test cases with numIterations = 100.

```
numIterations = 10, learningRate = 1.0, subsamplingRate = 1.0
metric = 0.8400000000000005
numIterations = 100, learningRate = 1.0, subsamplingRate = 1.0
metric = 0.5344090056285183
numIterations = 10, learningRate = 0.1, subsamplingRate = 1.0
metric = 0.08399999999999984
numIterations = 10, learningRate = 1.0, subsamplingRate = 0.75
metric = 0.8102205882352937
numIterations = 100, learningRate = 1.0, subsamplingRate = 0.75
metric = 0.565608647936787
numIterations = 10, learningRate = 0.1, subsamplingRate = 0.75
metric = 0.11179411764705861
```

A learning rate of 1 doesn't work very well especially with low number of iterations. Our default learning rate is 0.1 which should be fine.

Suggestion: We remove the learningRate = 1 option from the absolute error test. I can do more testing to check what settings work well for our GBT model and include it as a part of the documentation. I will also compare with scikit-learn to see how much additional loss do we get from an ideal implementation during the documentation phase.

cc: @jkbradley