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 
Why not using assert_array_almost_equal from sklearn.utils.testing?