Send in the right container block size for relative positioning.

This fixes #1757.
Split JSValConvertible into two traits.

Later, we'll want to implement variations of the conversion *from* JS, but
not the conversion *to* JS.
Use Option::or_else in eventdispatcher::dispatch_event.
auto merge of #1863 : saneyuki/servo/1841, r=metajack

fix #1841
Move JSVal into the jsval module.
Use FooValue() functions.
Use the JSVal member functions to replace JSVAL_IS_* and JSVAL_TO_*.
Add a trait for width and margin calculation.

+ Divide the width code into several methods.
+ Bring in the various width calculation methods into the trait
methods (like for blocks, floats, absolute flows, etc.)
+ Calculate margin top and bottom during assign width even for absolute
flows.
+ Add the Replaced versions for Floats and Absolute flows.
Implement min-width and max-width for non-block flows.

+ Add simple reftests.
+ Add reftests for float min-width and max-width.
Replace explicit match with as_ref().(fixes #1870)
Update rust-mozjs to include fixes for GC crashes.
auto merge of #1868 : Ms2ger/servo/JSVal, r=jdm

Requires https://github.com/mozilla-servo/rust-mozjs/pull/54.
auto merge of #1861 : Ms2ger/servo/split-JSValConvertible, r=jdm

Later, we'll want to implement variations of the conversion *from* JS, but
not the conversion *to* JS.
Pass a JSContext to ToJSValConvertible::to_jsval.
Allow passing options to FromJSValConvertible::from_jsval.
Replace str_to_jsval and domstring_to_jsval by a ToJSValConvertible implementation.
Replace jsval_to_str and jsval_to_domstring with a FromJSValConvertible implementation.
auto merge of #1873 : lpy/servo/issue1870, r=jdm

see #1870
Remove code from codegen that is nowhere close to working.
auto merge of #1876 : Ms2ger/servo/JSValConvertible-strings, r=jdm

Hat tip to @eddyb and @huonw for most of the clever bits of this PR.