[MRG] Sparse input support for Gradient Boosting

adds sparse input support:

  * Falls back to ``BestSparseSplitter``
  * Holds data in both ``csc`` and ``csr`` format during fit (needs the latter just to call ``tree.apply`` to get the terminal leaf assignment).

Todo:

  - [x] more & better tests
  - [x] benchmarks
  - [x] partial dependence

cc @arjoly @jnothman @glouppe 
Here you might create one dense column each time. What do you think of taking the approach done in [class_distribution](https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/utils/multiclass.py#L353).