DFS to pre-compute view layer levels and avoid collisions.

This fixes #15 at the expense of switching to a view-hierarchy snapshot rather than being tired directly. For some reason, we were triggering re-layout constantly which thrashes objects in this tree.

Not convinced this is ready to go in yet...