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