Add :hover and :focus selectors.

Also, the layout data was being used by the UI thread as though it was
shared immutable state, whereas that was actually a mutable data structure
owned by the render thread. That is now fixed - the UI thread acquires
the latest layout from the render thread, and release it back to the
render thread when it's finished with it.