layout: Make content of `display: inline-block; overflow: hidden` visible.
auto merge of #3627 : steveklabnik/servo/master, r=larsbergstrom

This may be because I'm on Ubuntu, but this was the name of the package.
Include leading margin in inline block size

According to the documentation for Fragment::position, the inline axis
should include margin size, so we include it for blocks. Also fix
place_float which assumed that it was not included and
assign_inline_sizes which overrode the size set in
set_inline_size_constraint_solutions.

Typically this issue was hidden by large tile sizes, but fitted tiles
makes it more common.
auto merge of #3618 : mrobinson/servo/layer-sizing, r=pcwalton

Extra size from margins should be included in block size, so that
layers are large enough to include the entire block. This is typically
hidden by large tile sizes (512x512), but fitted tiles makes the issue
a lot more common.
auto merge of #3635 : SimonSapin/servo/ua-stylesheet, r=pcwalton

Based on https://html.spec.whatwg.org/multipage/rendering.html rather than http://dev.w3.org/csswg/css2/grammar.html

Fixes #3629.

r? @pcwalton
auto merge of #3608 : glennw/servo/user-agent-navigator, r=Ms2ger

This also makes command line options available as a global. If we're happy with that change I will go through the rest of the code and update it to avoid passing and cloning the Opts structure.
layout: Store containing block inline-size separately rather than
writing it to a temporary location and overwriting it.

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.
auto merge of #3604 : pcwalton/servo/inline-block-overflow-hidden, r=glennw

Makes lots of GitHub appear.

r? @glennw
auto merge of #3632 : Ms2ger/servo/bindings-conf, r=Manishearth

We have no reason to support non-default type names, and this commit corrects
the computations for callbacks (which needed the override until now).
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.