[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 @codedeft
Oh, good point!  It looks like option # 2 is best:
```
scala> def test(a: Double) = (math.log(1 + math.exp(-a)), math.log1p(math.exp(-a)), -a + math.log1p(math.exp(a)))
test: (a: Double)(Double, Double, Double)

scala> test(1)
res6: (Double, Double, Double) = (0.31326168751822286,0.31326168751822286,0.3132616875182228)

scala> test(10)
res7: (Double, Double, Double) = (4.5398899216870535E-5,4.539889921686465E-5,4.5398899217730104E-5)

scala> test(20)
res8: (Double, Double, Double) = (2.0611536900435727E-9,2.061153620314381E-9,2.061153026033935E-9)

scala> test(30)
res9: (Double, Double, Double) = (9.348077867343381E-14,9.357622968839737E-14,9.237055564881302E-14)

scala> test(40)
res10: (Double, Double, Double) = (0.0,4.248354255291589E-18,0.0)

scala> test(100)
res11: (Double, Double, Double) = (0.0,3.720075976020836E-44,0.0)
```