[SPARK-4583] [mllib] LogLoss for GradientBoostedTrees fix + doc updates

Currently, the LogLoss used by GradientBoostedTrees has 2 issues:
* the gradient (and therefore loss) does not match that used by Friedman (1999)
* the error computation uses 0/1 accuracy, not log loss

This PR updates LogLoss.
It also adds some doc for boosting and forests.

I tested it on sample data and made sure the log loss is monotonically decreasing with each boosting iteration.

CC: @mengxr @manishamde
There is an issue with numerical stability. Maybe we can fix it in this PR. The problem appears when `w = -2.0 * point.label * prediction` is large. `math.exp(w)` would overflow while `math.log(1 + math.exp(w))` should be close to `w`. When `w < 0`, we can use

~~~
math.log1p(math.exp(w)).
~~~

Otherwise, we should use

~~~
w + math.log1p(math.exp(-w))
~~~