layout: Largely move display list building out to a separate file.

`layout::fragment` and `layout::block` were getting too big.