Simplify implementation of tree computation

This slightly changes the semantics, but no test was looking into this
peculiarity so it's okay to remove it.
Design a common interface for trees

There are two traits: Tree defines tree construction alone, whereas TreeWalk
wraps up computational queries on the trees.
Change nodes to store their width

This is arguably the more useful quantity than the extent (i.e. the
half-width).
Start unifying NodeWithData and Node

The construction routines of Node have been integrated into NodeWithData to
form a new type NTree. The construction benchmarks have been adapted. The query
functionality does not work yet.
Implement and adapt TreeWalk for NTree

All tests have been reinstated and run successfully.
Merge pull request #5 from aepsil0n/tree_interface

Tree interface