Send in the right container block size for relative positioning.

This fixes #1757.
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)
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
Remove unused CGAbstractStaticMethod class.
Remove some dead code from CGAbstractMethod._decorators.
Stop pointlessly indenting GetProtoObject.
Cleanup the code in PrototypeList().
Cleanup and simplify CGImports.
Reorder GetProtoObject.