script: Use a 16-element `SmallVec` for the root collection.

In my tests the size of the root collection never exceeded 7, so 16
seems like a nice conservative number.
script: Avoid a temporary when constructing `<td>` and `<tr>` elements.

Was a huge improvement to RoboHornet.
script: Use `String::new()` instead of the formatting infrastructure
when constructing DOM unique IDs.

This was showing up in the RoboHornet profile.
script: Don't dirty nodes that are already dirty.
script: Don't create a temporary vector on the heap when inserting
non-fragment nodes.
script: Use an FNV hash to hash event listeners.

The security properties of SipHash are irrelevant for event listeners
and the creation of the random number generator was showing up high in
the profiles.
layout: Support more types of selectors for style sharing.

This helps avoid problems with style sharing in common cases, often
caused by the user agent stylesheet.
Update to use CGL crate for mac.
auto merge of #3846 : glennw/servo/cgl, r=metajack
Adding initial version of parser trait

Added parse_chunk method declaration to parser

Removed unnecessary visibilty for parse_chunk function

Implemented parse_chunk function

Implemented parse_chunk fn for ServoHTMLParser

Moved parser trait to mod.rs and added finish fn

added licence header to mod.rs and other review comments

Fixed trailing space issue

Fixed failed tabular space test
layout: Actually calculate restyle damage while styling.

...oops. Looks like I forgot to do this.

r? @pcwalton
auto merge of #3836 : cgaebel/servo/calculate-restyle-damage, r=pcwalton

...oops. Looks like I forgot to do this.

r? @pcwalton
auto merge of #3718 : juzer10/servo/master, r=jdm

We have created parser trait and declared parse_chunk function in this trait. We are yet to implement this parse_chunk for ServoHTMLParser struct.
Disable indexed-browsing-contexts-01.html for flakiness.
auto merge of #3848 : Ms2ger/servo/indexed, r=mbrubeck
Infrastructure for synchronous script loading

This implements the parts of the "prepare a script element" algorithm that are
required for synchronous scripts.  It also adds some infrastructure for future
support of the `async` and `defer` attributes.
Switch to synchronous script loading

This removes the old code for asyncronously loading scripts during HTML
parsing and then executing them afterward.

Fixes #3356.
Don't force reflow on content changes

This fixes a performance regression caused by the previous patches.  Once we
allowed script and layout to run during parsing, it was running too often
(every time the document changed and called window.reflow).

Fixes #1269.
Implement cloning steps for script element
Test for sync script loading