Clean up tests
Pass entity array to Tree#rebase
More tests
Rewrite tree logic

The main problem with the existing logic was that it
did not update the extents of relations when previously incomplete members were loaded.

It was also overly stateful; the various queues and flags
are no longer required.

Fixes #1928.
Fixes #1540.