Fu tree

`fu` function makes use of tree strategies.  This uses `sympy.strategies.tree.greedy` to organize transformations rather than chain and minimize.  Aside from a slightly more established syntax this also introduces a couple of efficiencies in the call trees.

This pull request also passes a keyword function `objective` from `fu(...)` into the call tree.