layout: Refactor inline layout to remove the code that tried to avoid
splitting fragments.

I don't think it will be possible to avoid splitting fragments in the
presence of `vertical-align`, because one `ScannedTextFragment` could
potentially be split into arbitrary many fragments, each having its own
vertical position that can influence layout of other fragments.

This code also removes parts of `Range` that were no longer used.
auto merge of #3631 : pcwalton/servo/idempotent-inline-size, r=glennw

This makes layout more idempotent, which is important for incremental
layout.

Also converts `is_root` to a set of flags and fixes a `TODO` concerning
percentage inline heights of images.

r? @glennw
Do not compound iframe margins when positioning

Instead of taking margin size into account twice when positioning
layers, just rely on the absolute position calculated during display
list construction.
auto merge of #3650 : pcwalton/servo/give-up-on-not-splitting, r=glennw

I don't think it will be possible to avoid splitting fragments in the
presence of `vertical-align`, because one `ScannedTextFragment` could
potentially be split into arbitrary many fragments, each having its own
vertical position that can influence layout of other fragments.

This code also removes parts of `Range` that were no longer used.

r? @glennw
auto merge of #3651 : ttaubert/servo/issue/3643-event-new-enums, r=Manishearth

r? @jdm
auto merge of #3659 : zmike/servo/embedding-encoding, r=SimonSapin

r+ @larsbergstrom ?
auto merge of #3663 : glennw/servo/font-fallback, r=pcwalton

Previously, any font template that could not be found would return an item from the last resort font family. Now, the last resort font family is only searched if the entire list of supplied font families is empty.
auto merge of #3666 : ttaubert/servo/issue/3644-privatize-dom, r=Manishearth

This PR removes public fields from all (hope I didn't miss any) DOM structs. Should |Page| be privatized as well? This PR additionally introduces a #[privatize] lint to ensure nobody accidentally re-introduces a public field.

All changesets compile separately if applied in the same order. Hope that helps reviewing but I can of course squash them before merging.
layout: Rewrite clipping to be per-display-item instead of having
a separate `ClipDisplayItem`.

We push down clipping areas during absolute position calculation. This
makes display items into a flat list, improving cache locality. It
dramatically simplifies the code all around.

Because we need to push down clip rects even for absolutely-positioned
children of non-absolutely-positioned flows, this patch alters the
parallel traversal to compute absolute positions for
absolutely-positioned children at the same time it computes absolute
positions for other children. This doesn't seem to break anything either
in theory (since the overall order remains correct) or in practice. It
simplifies the parallel traversal code quite a bit.

See the relevant Gecko bug:
https://bugzilla.mozilla.org/show_bug.cgi?id=615734
Change accidental println to debug macro.
Merge pull request #3674 from glennw/remove-println

Change accidental println to debug macro.
Add support for local font faces. Improves fonts on rust lang and guide.
auto merge of #3654 : pcwalton/servo/clip-reform, r=mrobinson

We push down clipping areas during absolute position calculation. This
makes display items into a flat list, improving cache locality. It
dramatically simplifies the code all around.

Because we need to push down clip rects even for absolutely-positioned
children of non-absolutely-positioned flows, this patch alters the
parallel traversal to compute absolute positions for
absolutely-positioned children at the same time it computes absolute
positions for other children. This doesn't seem to break anything either
in theory (since the overall order remains correct) or in practice. It
simplifies the parallel traversal code quite a bit.

See the relevant Gecko bug:
https://bugzilla.mozilla.org/show_bug.cgi?id=615734

r? @mrobinson
Don't borrow CharacterData.data from layout.

This should fix the most frequent intermittent wpt failure.
auto merge of #3676 : Ms2ger/servo/no-text-borrow, r=Manishearth

This should fix the most frequent intermittent wpt failure.
auto merge of #3673 : mrobinson/servo/iframe-margin, r=pcwalton

Instead of taking margin size into account twice when positioning
layers, just rely on the absolute position calculated during display
list construction.
Create an almost-correct form_owner() for convenience
Add form submission via input element
Add click handler for <input type=submit>
Filter out buttons which aren't the submitter while constructing the dataset