[WIP] Support float values for max_features

This PR implements float values support for `max_features` in decision trees and ensembles. 

For example, one can now instantiate a random forest with `max_features=0.5*n_features` with `clf = RandomForestClassifier(max_features=0.5)`. The goal is to alleviate the need to know the exact number of features in the dataset, which can be cumbersome when one deals with feature engineering and the dimension of `X` varies.

TODO:
- implement it in GBRT