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.
script: Fix busted document fragment appending code
Fix race condition in XHR and handle other abort/open scenarios

This fixes issue #3630
A short summary of the changes:
* Use generation id to cancel inflight requests
* Handles nested calls to abort, open, send inside handlers
* Adds XHRReleaseMsg to delay freeing XHR object till all
  inflight events are processed
* Change the ErroredMsg enum to be more symmetric with the returned
  Error enum
auto merge of #3835 : pcwalton/servo/script-microoptzns, r=Ms2ger

This is a grab bag of various microoptimizations for script that I came across when profiling our performance on RoboHornet.

r? @jdm
Remove InputFragment

Fixes #3724.
auto merge of #3878 : zwarich/servo/remove-input-fragment, r=jdm

Fixes #3724.
Implements case insensitive font family names.

One part (of 8!) of css font family disambiguation is that font families should
be matched case-insensitively.

This patch implements that. Once it lands, a bug needs to be filed to do lowercasing
properly (as a string, instead of char-by-char -- it's a unicode thing).

r? @gw
Various fixes to CodegenRust.py
auto merge of #3880 : cgaebel/servo/case-insensitive-font-family-matching, r=glennw,glennw

One part (of 8!) of css font family disambiguation is that font families should
be matched case-insensitively.

This patch implements that. Once it lands, a bug needs to be filed to do lowercasing
properly (as a string, instead of char-by-char -- it's a unicode thing).

r? @glennw
auto merge of #3881 : brunoabinader/servo/dataset, r=jdm

Rust doesn't handle integers as bool on if statements, and defineProperty signature uses *mut instead of *const.
Update expectations for wpt tests under /XMLHttpRequest

Following tests are re-enabled:
* /XMLHttpRequest/send-network-error-async-events.sub.htm
* /XMLHttpRequest/send-network-error-sync-events.sub.htm
* /XMLHttpRequest/xmlhttprequest-timeout-worker-aborted.html
* /XMLHttpRequest/xmlhttprequest-timeout-worker-overrides.html
* /XMLHttpRequest/xmlhttprequest-timeout-worker-simple.html
* /XMLHttpRequest/xmlhttprequest-timeout-worker-twice.html

Following tests are disabled:
* /XMLHttpRequest/xmlhttprequest-timeout-worker-overridesexpires.html

The following tests are expected to timeout since window.postMessage is
not implemented yet:

* /XMLHttpRequest/xmlhttprequest-timeout-abortedonmain.html
* /XMLHttpRequest/xmlhttprequest-timeout-overrides.html
* /XMLHttpRequest/xmlhttprequest-timeout-overridesexpires.html
auto merge of #3732 : mukilan/servo/xhr-issue-3630, r=jdm

This fixes issue #3630
A short summary of the changes:
* Use atomic generation id to cancel inflight requests
* Handles nested calls to abort, open, send inside handlers
* Adds XHRReleaseMsg to delay freeing XHR object till all
  inflight events are processed
* Handles both timeout, errors and abort/open in a symmetric fashion
  i.e All inflight events will be cancelled for timeouts, aborts,
    errors and on calling open.
* Change the ErroredMsg enum to be more symmetric with the returned
  Error enum

I noticed a few possible changes that could make the code for fetch task simpler:
* We can remove the additional timer task and let the fetch task manage 
  its own timer (or maybe the resource loader can do this.)
* The CORS related steps could also be moved into the resource loader.
* Right now upload events are not support. This requires some support 
  from resource loader.