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.
Remove suggestion to use #[must_root] for functions
Cleanup the implementation of HTMLTableElement::GetCaption.
script: Fix busted document fragment appending code
More useful stb-image error handling
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 #3862 : Manishearth/servo/lint-fix, r=jdm

The correct thing to do here is to use `#[allow(unrooted_must_root)]` (the warning already mentions this). `#[must_root]` on functions does nothing.
auto merge of #3863 : Ms2ger/servo/cleanup-caption, r=Manishearth
Have ContentBox(es)Queries consult the flow tree

Instead of looking at the display tree, have ContentBox(es)Query consult
the flow tree. This allow optimizing away parts of the display tree
later. To do this we need to be more careful about how we send reflow
requests, only querying the flow tree when possible.

Fixes #3790.
auto merge of #3857 : mrobinson/servo/queries, r=pcwalton

Instead of looking at the display tree, have ContentBox(es)Query consult
the flow tree. This allow optimizing away parts of the display tree
later. To do this we need to be more careful about how we send reflow
requests, only querying the flow tree when possible.

Fixes #3790.
auto merge of #3872 : kmcallister/servo/stb-error, r=jdm
Removes the useless 'static constraint on SmallVec.

It was likely added accidentally after a rustc upgrade.

r? @jdm
auto merge of #3875 : cgaebel/servo/remove-static-constraint-on-smallvec, r=jdm

It was likely added accidentally after a rustc upgrade.

r? @jdm
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.