Return early and decline analysis when linting within unsafe functions for must_root analysis.

Removes a handful of whitelist annotations obsoleted by this change. fixes #3658
Avoid some Option::unwrap calls in page.rs.
Reindent in should_move_clip_rect.
All root layers should mask their content

Root layers that define the extent of iframes should always mask their
child content. This fixes a bug where root layers without an assigned
size and location do not spill over the entire scene.
Hit test against clipped layer boundaries

When finding the layer under a point, take into account clipping
rectangles defined by layers that mask to bounds. This prevents clicks
from being hijacked by masked layers.
auto merge of #4330 : Ms2ger/servo/page, r=jdm
auto merge of #4329 : mrobinson/servo/phantom-layer, r=pcwalton

At various moments, whether due to timing or layout issues, root layers (iframes) do not have a size and location. We modify the compositor to have all root layers mask to their content boundaries whether they have a frame rect or not. Uninitialized layers have empty boundaries, so they will disappear from the page. We also have to ensure that clicks to not go to areas of layers that are masked away. This fixes issues where ads on github take over the entire viewport.
Pass the timing information to PerformanceTiming rather than exposing methods.
some fixes for multiple-mode textinput
Add support for the 'rem' css unit
Switch android to glutin.
layout: Make table layout idempotent.

By "idempotent" I mean that later passes do not stomp on data from
earlier passes, so that we can run the passes individually for
incremental reflow. The main change here was to stop overwriting the
"minimum inline-size" field of each column with the column's computed
inline-size.
layout: Implement `outline` per CSS 2.1 § 18.4.

`invert` is not yet supported.

Objects that get layers will not yet display outlines properly. This is
because our overflow calculation doesn't take styles into account and
because layers are always anchored to the top left of the border box.
Since fixing this is work that is not related to outline *per se* I'm
leaving that to a followup and making a note in the code.
auto merge of #4189 : chmanchester/servo/rootlint, r=jdm

I think this matches the intent of the issue, I'm a rust/servo novice; any suggestions for improvements are welcome. Thanks!
auto merge of #4273 : wenderen/servo/multiple-line-textintput, r=Manishearth

#4258
auto merge of #4299 : pcwalton/servo/outline, r=mbrubeck

`invert` is not yet supported.

Objects that get layers will not yet display outlines properly. This is
because our overflow calculation doesn't take styles into account and
because layers are always anchored to the top left of the border box.
Since fixing this is work that is not related to outline *per se* I'm
leaving that to a followup and making a note in the code.

r? @SimonSapin
auto merge of #4327 : glennw/servo/glutin-android, r=larsbergstrom,larsbergstrom
auto merge of #4332 : Ms2ger/servo/performance, r=jdm
auto merge of #4339 : pcwalton/servo/refactor-tables, r=mbrubeck

By "idempotent" I mean that later passes do not stomp on data from
earlier passes, so that we can run the passes individually for
incremental reflow. The main change here was to stop overwriting the
"minimum inline-size" field of each column with the column's computed
inline-size.

r? @mbrubeck
auto merge of #4340 : michaelwu/servo/css-rem-support, r=SimonSapin

This works on my simple test page https://people.mozilla.org/~mwu/rem.html , hopefully works on real pages too. Seems a little messy to add root_font_size directly to ComputedValues, but it didn't seem appropriate to add to the style structs.