[MRG] Sample weights for gradient boosting

and piggy-packed ``'exponential'`` loss for binary classification (= AdaBoost).

I didn't implement sample weights for ``'lad'``, ``'huber'``, and ``'quantile'`` since it would require weighted median / percentiles. I will either raise a warning or exception in this case: what do you prefer?

cc @glouppe

TODO: ~~benchmark benchmark and some regression tests~~
This could be rewritten without the `\` by wrapping with the `)` as `*` and `/` are commutative:

```python
 return (-2.0 / sample_weight.sum()) *
 np.sum(sample_weight * ((y * pred) - np.logaddexp(0.0, pred))))
```