Don't perform composite unless renderer has indicated it's idle

The rendergl::render_scene() function is being called more often than
it needs to be, sometimes before the renderer has finished.  This
could result in PNG images that are drawn before the frame trees set
in SetIds is rendered.
Add comments and improve performance of a comparison
Track whether first render has run, not whether it's currently idle
auto merge of #1418 : dhedlund/servo/composite_when_ready, r=pcwalton

The rendergl::render_scene() function is being called more often than it needs to be, sometimes before the renderer has finished.  This could result in PNG images that are drawn before the frame trees set in SetIds is rendered.
Add `CompositorTask::create()` to initialize and start CompositorTask.
auto merge of #1419 : saneyuki/servo/create, r=pcwalton

This hide initializing steps of `CompositorTask` to make it easy to handle variables which related to compositor code.

Related: #1351.
Added recognition of positioned offsets

  top, bottom, right, and left
auto merge of #1407 : ibnc/servo/positioned_box_offsets, r=metajack

For #1406

Not really sure about some of my naming conventions, but offset was kinda taken in box.rs :/

Also this doesn't fully implement the offsets, but I'll do that alongside #782.
Pass parameters directly to 'run_compositor()'.
Introduce 'IOCompositor' to clean up compositor code.
auto merge of #1420 : saneyuki/servo/compositor, r=pcwalton

This change compositor code to objective, short scope, reducing closure functions. It will increase maintainability.

Related: #1351.
layout: Stop going to the DOM to guess width.
layout: Stop going to the DOM for text alignment.

Verified against the existing text alignment reftests.
layout: Stop going to the DOM for vertical align font sizing.
layout: Change a couple of `Box::new` calls that accessed the nodes into
`Box::transform`.
layout: Replace `AbstractNode`s in layout with `OpaqueNode`, preventing
DOM access during reflow.
auto merge of #1410 : pcwalton/servo/opaque-node, r=pcwalton

This shuts off all layout access to the DOM after flow tree construction, which will allow us to run script concurrently with layout during reflow and display list construction—even without the COW DOM. It also gets us closer to making `AbstractNode` noncopyable, which is important for safety because the JS GC will not trace layout.

r? @kmcallister