Simplify iterator handling for the test case (numeric vector).

Trying to hide away the details of wrapping -- done now for output
types, at least.
Simplify *input* iterator handling for the test case (numeric vector)

This really simplifies the algorithms file.
Update tree to use new implicit iterator wrappers.

Less boilerplate!
Checkpoint - wrappers work
Subtrees exported more gracefully, can do a little more with them.

Still currently only accessible via iterators though, and only
pre iterators supported.
Fully working subtree iterators!

This is sweet.  We can now construct a tree the same way that
tree_runner does.  Some (for me) fairly hairy template magic going
on, but does seem to work.