Precursor to Parallel Layout

This is a rollup of some of the changes necessary for parallel layout:

- Make assign_height partially bottom-up when there are no floats
- Use phantom types to ensure safety when perfoming the traversals
- Add an outline of the code that will eventually run traversals in parallel (this is not currently enabled or working)

The code in parallel_traversal.rs is a basic outline, but won't actually work yet. Comments on the general structure would be appreciated, but there's no need to look at it in detail yet. I also have some doubts about bringing the Chase-Lev queue into the tree, as we're hopefully going to use one from the Rust runtime and I don't even know if this one works (also, not sure about the license).