Add documentation about the scrolling model
Add #[privatize] to allow enforcing private fields for struct definitions
Simple privatizations
Privatize InheritTypes
Privatize Attr
Privatize Comment
Privatize DocumentType
Privatize EventTarget and EventListenerEntry
Privatize File
Privatize ProcessingInstruction
Privatize Document
Privatize Window
Privatize Node
Privatize Event
Privatize Element
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 #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.