De @-mut windowing.
Use custom enum for the namespace of attribute selectors.

… instead of None meaning "any namespace"
(where it could be the null namespace.)
auto merge of #1661 : SimonSapin/servo/attr-selectors, r=jdm

… instead of None meaning "any namespace" (where it could be the null namespace.)
RefCell->Cell
Glut RefCell->Cell
auto merge of #1663 : larsbergstrom/servo/remove_atmut, r=pcwalton

I'm submitting a part of this at first to get your feedback on whether I'm removing them in the style you like (before I go and push this strategy through the rest of non-script Servo). Note that Windowing is a little weird because its calls bounce down into C code which then re-calls into Rust, getting a handle on the Rc'd Window object out of TLS.

r? @pcwalton
Adding most commonly used parts of window.console. Fixes Issue#506. r=Ms2ger
auto merge of #1666 : ozten/servo/issue-506-add-basic-console, r=Ms2ger

Here is an attempt to fix Issue#506.

I couldn't figure out how to do variadic arguments to `console.log`, but I did test calling `console.log('foo', 'bar', 'baz')` and it prints the first argument and doesn't error out, which is nice.

window.console is not a web standards. I did the popular functions, but not some of the newer ones documented [on MDN](https://developer.mozilla.org/en-US/docs/Web/API/console).

This PR will allow more pages to load properly, where developers have left in window.console calls.
Add a simple iframe test page
Convert data-url.html to a reftest
Eliminate string match allocation in url.rs
Provide an error message for URL parse failure
Accept data: URLs on the command line without URL encoding

This facilitates quick testing, e.g.

    ./servo 'data:,<div style="color: red;">hi</div>'
auto merge of #1672 : kmcallister/servo/tests, r=pcwalton

I'd like to have an `iframe` reftest as well but `iframe`s are currently broken.  Will look into that next.
style: Separate out style structs into inherited and initial structs.

This doesn't make much of a difference in performance, but will be
necessary for style struct sharing.
layout: Stop storing intermediate applicable declarations inside layout
data.

9% improvement in style recalc on the rainbow page.
layout: Implement basic style sharing.

No improvement on the rainbow page, but necessary for some other
optimizations we want to do.
layout: Cache applicable-declarations-to-computed-values mappings.

If the cache is hit, then we can only compute inherited properties. This
is a WebKit optimization.
style: Eliminate a temporary vector when performing selector matching.

26% improvement in style recalc on the rainbow page.
layout: Aggressively try to share styles with the last few nodes seen.

This roughly implements the same cache found in Blink. 50% improvement
on the rainbow page, but at the cost of reducing parallel gains down to
nothing. I added a new page, `perf-rainbow-hard.html`, which disables
the optimizations in both Blink and Servo.