Reorganize tree traits

The operational behaviour of a tree is defined by what was TreeWalk before.
Hence, TreeWalk has been renamed to Tree. The former Tree trait was removed on
the other hand, as the constructors it defines do not hold generally. One may
for example write a tree without associated data (such as the current Node) and
still implement Tree<P, N, O, ()> for it.
Add new traits Node and AssociatedData for trees

Every tree should at least provide information about its structure and
geometry, so that one can write generic algorithms that directly work with the
structure outside the tree implementation.
Split Tree trait into DataQuery and ObjectQuery

This separates these concerns and leads to a cleaner interface. For convenience
and clear semantics two new trivial wrapper traits `Tree` and `PureTree` have
been added to comprise the functionality that makes up trees with and without
associated data.
Change PureNTree so that it impls PureTree

This also allows to benchmark `PureNTree` versus `NTree`.
Restructure file hierarchy

Common tree abstractions now live in the `tree` module, the
dimension-unspecific implementations in `ntree` and `util` now also contains
`Positionable` and `Entry` as they fit nowhere else (although they might
warrant another module at some point.
Further simplify query traits

It is not necessary to deal with the accumulation of values in the query
implementations. It is simpler to pass some callback that handles state changes
by closing over its environment.
Merge pull request #6 from aepsil0n/trait_reform

Restructure traits