Reduce number of font instances and shaper structures created.

The font cache previously kept weak references to the fonts,
however in layout these fonts are dropped before they are
referenced again, so no caching was being used.

For now, just hold a strong reference in the cache, which means
that fonts will never be thrown out (this will need to be fixed
in the future).
Make use of the list of Atoms in ClassSelector

Make use of the list of Atoms in the class attribute selector
(ClassSelector) in selector_matching.

Fixes #3111
Fix comment and and reference to bug #3300
Print debug message instead of fail when unable to load web font. Fixes #3301.
Merge pull request #3213 from gilles-leblanc/issue-3111

Make use of the list of Atoms in the class attribute in selector matchin...
Merge pull request #3304 from glennw/allow-font-failure

Print debug message instead of fail when unable to load web font. Fixes #3301.
Store Compositor ReadyState per-pipeline

Instead of storing a single ReadyState, store one per pipeline and
track the earliest one.
Store one RenderState per-pipeline in the Compositor

This can later be used to decide whether the entire pipeline is ready
for rendering.
Create root compositor layers for all frames eagerly

Instead of waiting to create the root layer, create them as soon as the
Compositor receives the frame tree. This allows the compositor to
create a layer tree skeleton of which to hang the base layers when they
are ready.
Remove SetLayerClipRect and add SetLayerOrigin

The constallation has accurate information about iframe layer origins,
but not their size.
Don't produce image output until all pipelines rendered something

Instead of producing image output as soon as the first pipeline is
ready, we wait to produce the output until all pipelines are in the
idle RenderState. This should remove a race condition when running
reference tests.
Update and expand iframe tests

Add iframe tests to their own subdirectory and add another test case
that used to trigger a fatal error. The new test case uses the
"allow-scripts" sandbox attribute to work around a script task failure
caused by the child frame sharing the same script task as the parent.
Merge pull request #3197 from mrobinson/iframes

Better handling of iframes in the compositor tree
Merge pull request #3298 from glennw/fix-font-cache

Reduce number of font instances and shaper structures created.
layout: Don't crash on floated generated content.

It doesn't construct the float correctly, but at least it doesn't crash
anymore.

Fixes Reddit.

Closes #3287.