Subtree append/prepend for both trees and subtrees

Now tree_append2 and tree_prepend2 fully implemented.
In-place initialisation works (tree_inplace_init).
Enable std::distance for iterators
Move tree_of and tree.of functions into helper for now.

Eventually possibly will go into the main package?
tree_const_iterators now implemented
Impliment tree accessors and simplify tests.

Tests now are closer to line-by-line versions of test_runner
Implement erase method, and support erase tests.
Prune and clear methods (and tests) implemented
insert_above and insert_below (plus tests)
Implement flatten() (plus tests)
Implement splice (and tests)
Implement parent (and tests)