[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~~
Also I don't see any test that check for none uniform sample weights. Maybe a toy edge case like:

```
X = [
    [1, 0],
    [1, 0],
    [1, 0],
    [0, 1],
])
y = [0, 0, 1, 0]
# ignore the first 2 training samples by setting their weight to 0
sample_weight = [0, 0, 1, 1]
gb = GradientBoostingClassifier(n_trees=5)
gb.fit(X, y, sample_weight=sample_weight)
assert_array_equal(gb.predict([[1, 0]]), [1])
```