[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
- [ ] Update adaboost for dtype

Todo later:
- update what's new


Unfortunately, this doesn't assure that a 0 lands up in `X_sparse.data`, which is what we want. (To be more precise, scipy explicit zero support is largely undocumented and untested, so we can't be sure whether this works, and it currently does for some sparse matrix types and does not for others!)

To be sure, modify `X_sparse.data` directly (or construct the matrix with the `(data, indices, indptr)` containing 0s).