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.