Introduce a basic shared task pool, and use it for image decoding.
Dump the flow tree with println, instead of error
Improve logical geometry formatting

Logical geometry is complicated, so the string formatted output is
verbose. This means that flow tree dumps often go well beyond the
edge of the terminal screen. With a simple notation, we can shorten the
output and make it slightly easier to read. This notation also makes it
more similar to the formatted output of Rect, Point2D, and Size2D.
gfx: Update rust-azure to pick up arcs, gradients, and subpixel text
layout: Rewrite text and inline fragment handling during flow
construction to avoid cloning and moving flows so much.

Besides amounting to a 5%-10% win on a page with a lot of text, this
simplifies and refactors the text layout code.
layout: Don't destroy the flow tree when resizing the window
gfx: Make fonts that fail to match hit the cache too.

50%-100% layout perf improvement on CNN.
gfx: Don't needlessly push and pop clip rects all the time.

15% painting improvement on CNN.
Update toml.py to upstream 1069d2449760525535ca77514a92e9237ee0deaf
Add an option to validate display list items

When this option is enabled, the layout task will print an error when
display list items draw outside their owning Flow's position rect. This
will make it easier to detect layout errors before they break rendering.

This is a command-line option for the moment, because we violate this
rule quite a bit still. Once all bugs causing this are fixed, we can be
more aggressive about enabling the option.
Add an option to show debug fragment borders

This is quite a bit cleaner than abusing the rust debug functionality.
If we start collecting too many debugging options in the servo
executable we could opt to organize them into a single option.

Fixes #2263.
auto merge of #3722 : pcwalton/servo/flow-construction-overhaul, r=glennw

This is a grab bag of performance improvements that significantly improve style recalculation, layout, and painting on a few static pages.

Let me know if you'd like me to split this PR up.

r? @glennw
more efficient preorder DOM traversals
auto merge of #3728 : cgaebel/servo/dump-flow-tree-with-println, r=mrobinson

r? @mrobinson
gfx: Switch the default to CPU painting.

We've discussed this some and I think there's consensus to do it as a
pragmatic decision for now. CPU painting is more stable, especially with
buggy drivers, and faster (because we aren't caching the necessary
OpenGL objects yet and possibly for other reasons), so it provides a
better "out of the box" experience for newcomers to Servo who don't know
to pass the `-c` option. This patch continues to reftest both Skia and
Skia-GL out of a desire to keep options open. Skia-GL remains a
first-class citizen.
auto merge of #3744 : cgaebel/servo/efficient-preorder-traversal, r=pcwalton

This also tackles some nearby FIXMEs. `traverse_preorder` is used in a LOT of
DOM functions..

r? @pcwalton
auto merge of #3730 : glennw/servo/taskpool, r=pcwalton

r? @pcwalton - Is this the kind of thing you were thinking of in terms of task queue?
properly incrementally set block size
added cmake to dependencies in build instructions
Merge pull request #3764 from dherman/dherman-build-instructions

added cmake to dependencies in build instructions