[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


Though this might be more optimised.
Here the bench that I have made to address one of the @larsmans's comment.
```
# 20 news group (density ~ 0.0012)
rf = RandomForestClassifier(max_features=0.1, random_state=0)
rf without                88.6212s   0.0903s     0.3586  
rf with 0.1 * n_indices   95.1268s   0.1226s     0.3586  
rf with 0.2 * n_indices   89.6108s   0.1077s     0.3586  

# Covertype (density ~ 0.22)
dt without               436.5677s   0.0164s     0.0426  
dt with 0.1 * n_indices   68.9361s   0.0193s     0.0426 
dt with 0.2 * n_indices   60.6809s   0.0147s     0.0426
```