Use default methods to reduce code duplication for TestBinding.
Use Vec for GlyphStore::entry_buffer.
Use Vec for SelectorMap fields.
Use Vec for FrameTreeIterator::stack.
Use Vec for SendableFrameTree::children.
Use Vec for Font::new_from_buffer.
Remove OptVector.
Use a single JSContext per JSRuntime.

The long-term plan for SpiderMonkey is to eliminate JSContexts by merging
(most of) it into JSRuntime, so to future-proof our code, we should avoid
creating multiple JSContexts for the same JSRuntime.

However, this implies we'll have to use the same JSContext for objects in
different compartments, so we need to enter compartments. This is done by
using the with_compartment function.
Implement ChildNode.remove()
auto merge of #2326 : jdm/servo/remove, r=Ms2ger

Fixes #2191.
auto merge of #2322 : Ms2ger/servo/vec, r=jdm
auto merge of #2325 : Ms2ger/servo/testbinding-default, r=jdm
Simplify smallvec macros

Macros can now expand to multiple items. This takes advantage of that.
Enter a compartment when calling timeout handlers.
Replace most of the SmallVec0 usages with std::vec::Vec

We can't replace the ones in the `style` crate because some functions expect generic `SmallVec`s.
Remove unused teardown methods

According to @pcwalton these used to be important for memory safety but are no longer needed now.
auto merge of #2337 : bjz/servo/smallvec, r=pcwalton

We can't replace the ones in the `style` crate because some functions expect generic `SmallVec`s.

I also did some reorganisation of the `smallvec` macros.

cc @pcwalton
auto merge of #2338 : bjz/servo/remove-teardown, r=pcwalton

According to @pcwalton these used to be important for memory safety but are no longer needed now.
Enter a compartment when calling callbacks.
Don't clobber the default wrapping callback.