Turn on GC all the time. Fix rooting errors during parsing and storing timers. Fix borrow errors during tracing.
Implement safe rooting strategy via Unrooted, Root, JSRef, and JS.
Remove JS::get/get_mut to enforce sound rooting practices.
Move WebIDL methods to traits implemented by JSRef types.
Remove abstract_self.
Move all methods on T to JSRef<T> or JS<T> as appropriate.
Allow controlling GC zeal via JS_GC_ZEAL environment variable.
Move stack roots into Root types instead of RootCollection, removing the aribtrary 10 roots per stack frame restriction.
s/Unrooted/Temporary/g
Root Temporary values for the duration of their lifetime.
Store per-ScriptTask RootCollection in TLS and use that in favour of per-frame collections.
Remove all root collections.
Address review comments.
Make dictionaries contain Root<T> values instead of JS<T>, ensuring that they will not be collected while the dictionary is alive.
Fix up the virtual method unsoundness.
Address review comments.
auto merge of #2101 : jdm/servo/newroot_rebase, r=Ms2ger

As described in #1764, this strategy uses the following properties:
* DOM members are `JS<T>` types. These cannot be used with being explicitly rooted, but they are required for compiler-derived trace hooks.
* Methods that take DOM type arguments receive `&[mut] JSRef<T>`. These are rooted value references that are cloneable but cannot escape.
* Methods that return DOM values use `Unrooted<T>`. These are values that may or may not be rooted elsewhere, but callers must root them in order to interact with them in any way. One unsoundness hole exists - `Unrooted` values must be rooted ASAP, or there exists the danger that JSAPI calls could be made that could cause the underlying JS value to be GCed.
* All methods are implemented on `JSRef<T>`, enforcing the requirement that all DOM values are rooted for the duration of a method call (with a few exceptions for layout-related code, which cannot root values and therefore interacts with `JS<T>` and `&T` values - this is safe under the assumption that layout code interacts with DOM nodes that are in the tree, therefore rooted, and does not run concurrently with content code)