Introduce layout objects
We've discussed the idea of maintaining two trees: the widget tree, and a tree of layout objects
- the layout tree is the result of allocating the widget tree (possibly in a thread)
- it remains unchanged during the frame until it gets replaced at the next size-allocate
- possibly animation can happen on the layout tree