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 
in the sparse case we fall back to ``tree.predict`` -- the special implementation above is only to get good performance for very small X