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.
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.
Remove some C++-related code in BindingGen.py.
Remove a pointless argument to generate_file in GlobalGen.py.
auto merge of #1883 : Ms2ger/servo/cleanup-codegen, r=jdm
Replace GetReflector by an implementation of ToJSValConvertible.
auto merge of #1878 : Ms2ger/servo/GetReflector, r=jdm
Completely rewrite the code to convert JSVals to unions.

This code works correctly for the two unions currently in use, and raises
exceptions in codegen for most other cases. I will implement those cases when
the need arises.
auto merge of #1875 : Ms2ger/servo/unions, r=jdm

This code works correctly for the two unions currently in use, and raises
exceptions in codegen for most other cases. I will implement those cases when
the need arises.
Merge CGThing.declare and CGThing.define.

This distincion is carried over from the C++ codegen, but it has no meaning
in Rust.
auto merge of #1887 : Ms2ger/servo/merge-declare-define, r=jdm

This distincion is carried over from the C++ codegen, but it has no meaning
in Rust.