Split JSValConvertible into two traits.

Later, we'll want to implement variations of the conversion *from* JS, but
not the conversion *to* JS.
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.
auto merge of #1877 : Ms2ger/servo/dead-codegen-code, r=jdm
Ubuntu doesn't have g++ installed by default, adding it to pre-requisites
auto merge of #1881 : analyst74/servo/master, r=metajack

..per title