[MRG] Some cleanup in _tree.pyx

This pr clean up the _tree module:
 - Clean `TreeBuilder` interface in _tree.pxd
 - Avoid storing tree parameters in `Tree`, instead pass those parameters directly to `TreeBuilder`
 - Avoid storing the `random_state` in `Tree`.
 - Split `CONSTANT_FEATURE_THRESHOLD` into two constants `MIN_IMPURITY_SPLIT ` and `CONSTANT_FEATURE_THRESHOLD`.
 - Stricter separation between the `TreeBuilder`, `Splitter` and `Criterion`.
 - Add stopping criterion  `MIN_IMPURITY_SPLIT ` to `BestFirstTreeBuilder` as to be symmetric with `DepthFirstTreeBuilder`.
 - Inline some `BestFirstTreeBuilder` functions.
 - Fix pep8 error

This pr is ready for review.

Should we kept the `CONSTANT_FEATURE_THRESHOLD` feature? It could lead to unexpected behaviour to users.