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.
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.
auto merge of #1872 : pradeep90/servo/calculate-width-trait, r=pcwalton

+ Move out and separate the width calculation code for 6 cases like: block-replaced, block-non-replaced, float-replaced, etc.
  This implements #1683
+ Use the trait to have a common min-width and max-width calculation function (This completes #783 for blocks)
+ Add reftests for the above.
script: Fix a borrow flags race in layout on `.owner_doc()`.
auto merge of #1808 : pradeep90/servo/relative-position-container-block-size, r=pcwalton

This fixes #1757.
Update the WindowTimers interface to the current specification.
Add compareDocumentPosition (fixes #1794) to Node
auto merge of #1862 : Manishearth/servo/comparedoc-1794, r=Ms2ger
Don't use the Untraceable fields outside the module they're defined in.

This pattern will become illegal with the next Rust upgrade.
Remove support for returning values through outparams.
auto merge of #1893 : Ms2ger/servo/extra-private, r=larsbergstrom

This pattern will become illegal with the next Rust upgrade.
auto merge of #1889 : pcwalton/servo/fix-borrow-flags-race, r=jdm

r? @jdm
auto merge of #1890 : Ms2ger/servo/Window-idl, r=jdm
auto merge of #1895 : Ms2ger/servo/outparams, r=jdm
s/isnot/is_not/ in harness.js

For sake of harness.js interface harmony.