Add overflow to child layer size

When creating child layers it is important to consider overflow when
determining the size of the layer. This also means that overflow should
not be too large, so also shrink block width down to the size of their
contained fragment. This means that a block that has been explicitly
sized to width:100px should be 100 pixels wide instead of the width of
its containing block.
Render in parallel
Allow render threads to be specified with -t
Add a command line option (-n) to use native threading, for testing.

I added this to test the impact of green threading.
Fix typos
Use internal mutability for XMLHttpRequest.
Merge pull request #2658 from saneyuki/xhr

Use internal mutability for XMLHttpRequest.
Enable IRC notifications from Travis CI
Merge pull request #2679 from larsbergstrom/IRC_notifications

Enable IRC notifications from Travis CI
Use iterators to make some logic clearer
Use Option functions to make logic clearer
Make move mutation out of compute_minimum_ascent_and_descent
Remove some unnecessary mutable references
Use Option::expect instead of pattern matching in try_append_to_line_by_new_line
Clean up skip_while iteration
Merge pull request #2667 from mrobinson/overflow

Add overflow to child layer size
Merge pull request #2609 from brson/parallel-render

Render in parallel
Revert "Merge pull request #2609 from brson/parallel-render"

This reverts commit 850bd2891de589b95e32dc8f0b59d4043ed1e0a3, reversing
changes made to 5b0feac32a3ef13a76670eb2f5f21e7b598fc890.
Merge pull request #2685 from larsbergstrom/revert_2609

Revert "Merge pull request #2609 from brson/parallel-render"
Separate "desktop" and "mobile" zoom calculations.

This ensures that the layout viewport responds to each type of zoom correctly,
and lays the ground for CSS Media Queries and CSS Device Adaption.

Until we have proper touch support, mobile-style "pinch" zoom can be simulated
by holding Ctrl while scrolling with a mousewheel or trackpad gesture.