[MRG] Faster decision tree / random forest / extra trees by avoiding trying to split on constant features + FIX bug with constant features

If we find a constant features, we avoid trying to split later on it. This optimization is lightweight for tree based on  `DepthFirstTreeBuilder`. 

TODO list:
- [x] RandomSplitter
- [x] BestSplitter
- [x] Presort-bestsplitter?
- [x] ~~Benchmarking~~
- [x] code style

For extra trees, I already got 
```
$ (sklearn) ± python benchmarks/bench_covertype.py --classifier=ExtraTrees  --random-seed=0


Classifier   train-time test-time error-rate
--------------------------------------------
master        90.2975s   0.3086s     0.0214  
this branch   69.4262s   0.3143s     0.0209  
```

NB: Error rates are different since we samples fewer random number.