Render in parallel

This round-robins tile rendering across cores. I put this together pretty quickly at the end of the work week, but it's probably close to ready. The speedups aren't as good as you might expect (perf-rainbow is decent), but it is generally faster, these test cases aren't all that rendering-intense, and there's probably some unknown synchronization happening deeper in the stack.

Some numbers (in ms) on my 4 core machine:

# CPU mode, en.wikipedia.org/wiki/Rust
before: RenderingCategory: 108.3725 102.9995 2.7500 280.4812 91
after: RenderingCategory: 85.5513 87.8209 3.6918 149.5089 121
 
# GPU mode, en.wikipedia.org/wiki/Rust
before: RenderingCategory: 383.4462 308.6807 151.7053 840.7829 22
after: RenderingCategory: 338.4899 360.0376 90.4928 586.7247 54
 
# CPU mode, lipsum.html
before: RenderingCategory: 43.8702 41.5389 0.4079 119.9315 165
after: RenderingCategory: 51.1924 48.0576 0.3047 123.5846 113
 
# GPU mode, lipsum.html
before: RenderingCategory: 374.0989 396.5835 88.6352 629.7278 30
after: RenderingCategory: 222.2546 229.1403 58.1653 442.7781 46
 
# CPU, perf-rainbow.html
before: RenderingCategory: 54.5183 56.3723 29.4359 93.4502 22
after: RenderingCategory: 25.5713 22.3374 2.6982 93.4121 65
We have a `layout_threads` option in `gfx::opts` for this; I would suggest just using the same value.