Implement window.atob/btoa
Implement HTMLAnchorElement.text
Implement HTMLScriptElement.text
Download Rust snapshots in make rather than configure.

When parallel make (`-j`) is used, this enables building non-Rust dependencies
while the Rust compiler is being downloaded.

On my laptop, from an empty build directory,
`~/projects/servo/configure --disable-optimize && make -j6`
goes from ~7 minutes to ~6 minutes.
The difference matches the download time.
Merge pull request #3096 from SimonSapin/make-snapshot

Download Rust snapshots in make rather than configure. r=@Manishearth
Update to latest rust-layers

We now need to pass through the content age of the LayerBuffer when
creating it.
Mark all layers as having changed content during pinch zoom

This ensures that layers know that they need to re-issue buffer
requests immediately instead of waiting until another content change
happens.

Fixes #2988.
Use Result/Err(()) instead of Option/None to indicate a CSS parse error.
Use Result/Err(()) in Selector parsing.

… get rid of some custom `enum` types for parsing return values.
`Option<Option<T>>` was ridiculous, but `Result<Option<T>, ()>`
make perfect sense.

Also, we can now take advantage of the `try!()` macro.
Fix parsing of `text-decoration: none`

It would previously accept and ignore garbage in the declaration value
after the `none` keyword.
Rename MatchedProperty to DeclarationBlock
Have quicksort take a compare function rather than requires Ord and Eq.
Cloning `DeclarationBlock` is cheap, the declarations are in an `Arc`.
Remove special treatment of UA stylesheet for parse errors.

CSS parse errors are now off by default anyway.
Move UA stylesheet to src/components/style
Fix case sensitivity of local name selectors.
Fix #2802: fix parsing of font-family in @font-face
Dissallow !important in @font-face
Refactor and fix src parsing in @font-face
Make more things private to the style crate.