Implement CharacterData.{deleteData, insertData, replaceData}
Ensure JS-owned memory is not leaked if a script task fails. Fixes #2201.
Add testcase #2025 for document.getElementById().
Make Attr::SetValue uses the internal setter.
Make Attr::SetValue to reflect attribute change.
Make Attr handles all setting value.
Remove all traces of WindowProxy. Implement basic browser context concept and outerizing of inner windows.
Implement ParentNode.children for Document and Element

Also implement it for DocumentFragment
Implement Element.localName.(fixes #2188)
Update expectations.
Remove unused invalidate_rect code
Make sure RefCell borrows are temporary.

This fixes two `RefCell<T> is already borrowed` failures when reloading an
existing pipeline, both caused by functions trying to modify `Pipeline::url`
or `ScriptTask::url` while a reference to a previous borrow is still in scope.
Make the I Tried star appear when a top-level page load fails for network-related reasons.

Under the hood, this requires treating the I Tried pipeline as a new load instead of a replacement, since the failure-handling code interacts poorly with the rest of the replacement code when we get a series of staggered failures over time from the various pipeline components.
Add NodeHelpers::get_bounding_content_box().
Add NodeHelpers::get_content_boxes().
Add Page::hit_test().
Add Page::get_nodes_under_mouse().
Ensure Node.Normalize() acts on all descendents by recursively calling it on all non-text child nodes.