Remove some code duplication in the Compositor

It is possible to share the code which creates root layers.
Update behavior of Document.createElement

Fixes #4009.

Only lower-case the argument to Document#createElement if it's a HTML document.
Lower case the type attribute before checking if it's JS
wide form buttons fixes #3972
auto merge of #4021 : letharion/servo/Case-insensitive-HTMLScriptElementHelpers-comparision, r=Ms2ger

Fix for #3993
Implement DOMImplementation.hasFeature

Fixes #4010.
auto merge of #4029 : znewman01/servo/issue4009, r=Ms2ger

Fixes #4009.

Only lower-case the argument to Document#createElement if it's a HTML document.
auto merge of #4027 : znewman01/servo/issue4010, r=Ms2ger

Fixes #4010.

This is my first Servo contribution, so let me know if I missed anything!
Stop including the element during Element.getElementsByClassName.

https://github.com/servo/servo/issues/3995
auto merge of #4030 : achals/servo/master, r=Ms2ger

https://github.com/servo/servo/issues/3995

This is my first PR, so please let me know if I'm doing something wrong!
auto merge of #4031 : donaldpipowitch/servo/wide-form-buttons, r=jdm

My first pull request to servo \o/

Try to fix https://github.com/servo/servo/issues/3972. Tested with `./mach run tests/html/test-inputs.html`.
Any reasons why this CSS is formatted this way? (All properties on the same line. Looks a little bit _generated_?)
Remove bitfield! macro in favour of bitflags!
auto merge of #4015 : letharion/servo/Bitfield-to-bitflags, r=mbrubeck

Attempt to solve #3690 

I've re-rolled the changes from https://github.com/servo/servo/pull/2610, and then doen the necessary updates to get this to compile with the current snapshot of rust.

The documentation for values I've added in the bitflag are missing, because I don't know what is the appropriate text.
address review comments
auto merge of #4025 : zmike/servo/embedding-string_multimap, r=jdm

@jdm @larsbergstrom
Add glutin port (supported on Linux only currently).

Default build uses glfw, but glutin can be enabled via:

./mach cargo build --no-default-features --features=glutin
auto merge of #4028 : glennw/servo/glutin, r=larsbergstrom

Default build uses glfw, but glutin can be enabled via:

./mach cargo build --no-default-features --features=glutin

Remaining work:
 * Mac
 * Android
 * hi-dpi
 * nested event loop

This PR also enables true headless (without X) rendering on Linux by specifying the rendering API as Mesa.
layout: Eliminate the virtual `is_float()` in favor of the flow flags
layout: Incrementalize reflow of block formatting contexts impacted by
floats, and make float placement idempotent.

This moves float placement outside sequential block size computation.

Improves the maze solver.
auto merge of #3904 : pcwalton/servo/maze-solver-float-placement, r=cgaebel

r? @glennw @cgaebel