compute_layout now has the following responsibilities: * render backgrounds as separate rectangles * compute x/y/w/h of each text node based on type (rows/cols) and width * compute width of some nodes based on widths higher up the tree