[MRG] Sparse input support for decision tree and forest

This pull request aims to finish the work in #2984.
For reference: #655, #2848 

TODO list:

- [x] clean rebase (remove unwanted generated file, github merge commit, ...)
- [x] simpler input validation for tree base method (safe_array, check_array?)
- [x] reduce testing times and rationalize tests
- [x] use the new safe_realloc
- [x] document fit, ... with the sparse format support
- [x] fix bug in algorithm selection binary_search
- [x] raise error if int64 sparse index matrix
- [x] test oob scores
- [x] test random tree embedding with sparse input data
- [x] ensure that X is 2d
- [x] test forest apply (sparse)
- [x] test error raised if bootstrap=False and oob_score=True
- [x] test not fitted and `feature_importances_`
- [x] Check warning oob_score
- [x] Let tree estimator handle int64 based sparse matrices
- [x] switch xrange -> range
- [x] Update adaboost for dtype

Todo later:
- update what's new


Not required, it's in the commit log. In fact, I've been thinking of removing my own email address from the source to prevent people from contacting me personally for support.