ENH/FIX Change Tree underlying data structure

* avoid segfault (#2726) by setting base on numpy arrays
* A struct array for tree nodes and values array (size indeterminate at
compile time) are the only underlying structure, so each node is locally
grouped memory, and joblib dumps will save only two numpy files per
tree.
* predict() uses the value array's take method, reducing code repetition
Merge pull request #2732 from jnothman/two-array-tree

[MRG] ENH/FIX Change Tree underlying data structure
COSMIT: PEP8 + coding style
COSMIT: PEP8 in test_gradient_boosting.py
COSMIT: Fix some PEP8 in gradient_boosting
COSMIT: PEP8 in test_imputation
COSMIT: Various PEP8
Merge branch 'master' into multiple_grid_search