[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 
Why introduce the pair of functions `predict_stage_sparse` / `predict_stage_dense` instead of checking `sp.issparse(X)` to dispatch to the right `predict_stages_xxx` method?