Remove some code duplication in the Compositor

It is possible to share the code which creates root layers.
embedding: begin cef string_multimap api

cef_string_multimap_alloc()
embedding: cef_string_multimap_size()
embedding: cef_string_multimap_find_count()
embedding: cef_string_multimap_append()
embedding: cef_string_multimap_enumerate()
embedding: cef_string_multimap_key()
embedding: cef_string_multimap_value()
embedding: cef_string_multimap_clear()
embedding: cef_string_multimap_free()
embedding: replace usage of deprecated find*() with get*()
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
Remove rust-alert as it's broken on mac, and unimplemented on other platforms.
auto merge of #4035 : glennw/servo/remove-rust-alert, r=pcwalton