layout: Rewrite display list building to be parallel and to handle
overflow correctly, and opportunistically lay out blocks in parallel
even if floats are present.

This commit fixes the `inline-height-test` in Acid2 by implementing
proper overflow as well as the inline "strut".  (See CSS 2.1 § 10.8.1.)
Acid2 was accidentally being rendered properly before because tables'
descendant flows were not being laid out properly.

Display list building is now parallel and is done by bubbling up display
items and layers from parent to child. Speedups of around 60%-70% are
observed on Wikipedia with a 4-core HyperThreaded Core i7.  More
optimizations are possible; this is just a start.

To minimize the amount of data that needs to be bubbled up, as well as
to make proper handling of `overflow: hidden` clipping easier, the
`StackingContext` abstraction is now purely internal to the display
list.  That is, instead of placing items into a stacking context
directly, display items are placed into display lists alongside a
stacking level.  When a stacking context is complete, it is flattened
with the the `flatten` method, which shuffles the display items that
make up the context into their proper order while handling clipping
properly.
auto merge of #2235 : pcwalton/servo/parallel-floats, r=larsbergstrom

layout: Rewrite display list building to be parallel and to handle
overflow correctly, and opportunistically lay out blocks in parallel
even if floats are present.

This series of commits fixes the `inline-height-test` in Acid2 by
implementing proper overflow as well as the inline "strut". (See CSS 2.1
§ 10.8.1.) It was accidentally working before because tables' descendant
flows were not being laid out properly.

Display list building is now parallel and is done by bubbling up display
items and layers from parent to child. Speedups of around 60%-70% are
observed on Wikipedia with a 4-core HyperThreaded Core i7. More
optimizations are possible; this is just a start.

To minimize the amount of data that needs to be bubbled up, as well as
to make proper handling of `overflow: hidden` clipping easier, the
`StackingContext` abstraction is now purely internal to the display
list. Instead of placing items into a stacking context directly, display
items are placed into display lists with an explicit `StackingLevel`
provided. The stacking level determines a display item's position within
the stacking context. When a stacking context is finished, it is
flattened with the the `flatten` method, which shuffles the display
items that make up the context into their proper order while handling
clipping properly.

r? @SimonSapin and/or @larsbergstrom
layout: Guess the width of block formatting contexts so that we can
speculatively lay them out in parallel
auto merge of #2256 : pcwalton/servo/simple-block-formatting-contexts, r=larsbergstrom

r? @SimonSapin
Webidl and basic implementation of XHR object
auto merge of #2292 : Manishearth/servo/xhr-webidl, r=Ms2ger

This just gets a working interface with dummy methods in place that can  be built on. I'll implement stuff as we go along.

Blocks #2282
Add JSCLASS_DOM_GLOBAL to DOM global classes, and assert it is used.

It seems unlikely that this will ever be hit, but potentially hard to
figure out if it ever is hit.
Update rust-opengles.

This includes changes to move from ~[T] to Vec<T>.
auto merge of #2295 : Ms2ger/servo/JSCLASS_DOM_GLOBAL, r=jdm

It seems unlikely that this will ever be hit, but potentially hard to
figure out if it ever is hit.
Stop passing owned strings to fail!().

The ~"string" expression is being removed in upstream rust.
Use ByteString in XHR
auto merge of #2301 : Manishearth/servo/xhr-bytestring, r=Ms2ger

I had used DOMString in place of ByteString while implementing the XHR webidl, now that we have ByteString, I'll switch to that.

Blocks #2282
auto merge of #2297 : Ms2ger/servo/fail-owned-str, r=jdm

The ~"string" expression is being removed in upstream rust.
Use new attribute syntax
Fix some private type export warnings
auto merge of #2303 : Manishearth/servo/privtype, r=jdm
auto merge of #2302 : Manishearth/servo/attr, r=Ms2ger
Turn on GC all the time. Fix rooting errors during parsing and storing timers. Fix borrow errors during tracing.
Implement safe rooting strategy via Unrooted, Root, JSRef, and JS.
Remove JS::get/get_mut to enforce sound rooting practices.