Port selector matching to use atoms.

Removed the Lowercase new type. This does mean that this
code path is slightly slower for now. This is because
find_equiv() doesn't work with atoms in hash tables, due to
the hash value being different than that of a string. However
it also means the removal of some unsafe code, and a better
long term solution will be to precache the lower case versions
as atoms.
Refactor how LayoutContext structure works (reduce TLS lookups + simplify fns used by seq/parallel code paths).

- LayoutContext is renamed to SharedLayoutContext.
- SharedLayoutContext is immutable.
- LayoutContext is a wrapper around SharedLayoutContext + access to local caches (font, style etc).
- Creating a LayoutContext does a single local_data lookup to fetch the cache information.
- Android shares same implementation of context.rs as other platforms.
- LayoutContext can be used from both green thread (parallel layout) and native thread (sequential layout).
- Removes the need for other types (such as FontContext, StyleSharingCandidateCache etc) to be passed around.
Merge pull request #3069 from glennw/refactor_layout_context

Refactor how LayoutContext structure works (reduce TLS lookups + simplify fns used by seq/parallel code paths).
Give workers their own ScriptChan and use it for postMessage.

This ensures that XHR callbacks for XHR objects in workers are called on the
worker thread rather than the main thread.
Merge commit 'refs/pull/3029/head' of https://github.com/servo/servo

Conflicts:
	src/components/style/selector_matching.rs
Improve the documentation for ScriptMsg.
Merge pull request #3071 from Ms2ger/workers-threads

Give workers their own ScriptChan and use it for postMessage; r=Manishearth