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:

  - [ ] more & better tests
  - [ ] benchmarks
  - [ ] review

cc @arjoly @jnothman @glouppe 
I'm not proud of ``X_apply`` but we need a csr matrix for ``tree.apply``.