embedding: begin cef string_map api

cef_string_map_alloc()
embedding: cef_string_map_size()
embedding: cef_string_map_append()
embedding: cef_string_map_find()
embedding: cef_string_map_key()
embedding: cef_string_map_value()
embedding: cef_string_map_clear()
embedding: cef_string_map_free()
embedding: rename string_list internal function to string_list instead of string_map
embedding: cef_string_utf8_cmp()
Clip display list based on frame viewport

Instead of creating a display list for the entire page, only create one
for an area that expands around the viewport. On my machine this makes
incremental layout of http://timecube.com 50% faster.
Rename LoadIframeUrlMsg to CreateIFrameAndLoadUrlMsg

This better reflects what the message does.
Small fix to variable name

This is a more accurate name for the script pipeline.
Add some factory methods for frame tree types
Send incremental frame tree updates to the compositor

This allows the compositor to add frames after the call to SetIds,
where the initial frame tree is created. There are still some issues
preventing proper late frame creation, but this prevents crashes when
it happens.

Fixes #3738.
auto merge of #3951 : mrobinson/servo/iframes, r=jdm

This is the first step to allowing incremental iframe creation and destruction. This should eliminate task failures when an iframe is added to the frame tree lazily via script.
Move code related to json packet reading to JsonPacketSender trait

fixup! Move code related to json packet reading to JsonPacketSender trait
Fix #3933
Remove some code duplication in the Compositor

It is possible to share the code which creates root layers.
auto merge of #3955 : thiagopnts/servo/devtools-refactoring, r=jdm

I was messing around devtools code and saw some TODOs, is anyone working on it? I took one of them:

```// TODO: this really belongs in the protocol module.```

I would be glad to help with this if no one is on it already, just let me know.