These bugs were both cases where focus() was called on an element which didn't have a renderer yet because stylesheets hadn't finished loading yet.
Now, we detect this case and let setFocusNode be called. And when the stylesheet finishes loading, and the element attaches, a timer will fire,
which will cause the correct selection & scrolling behavior to occur.
This fix removes selection and scrolling behavior from the focus method. This code is now in a new method, updateFocusAppearance.
updateFocusAppearance can now be called directly from focus(), but it can also be called when a timer fires. This timer gets set
up when an element attaches, and its already been focused by the focus method. We have to use a timer, because updateFocusAppearance can cause
a layout to happen, and we don't want that to happen in the middle of attach().