prefer np.as(fortran|continuous)array over np.asarray(order=order)
pre-offset X pointer (X_fx); doesn't help performance-wise
pass impurity to ``impurity_improvement`` - now it is correct so that arbitrary Criteria can be used in best-first search.