Implement Element.matches().
Made Page.window_size and Page.next_subpage_id Traceable, added trait Encodable for WindowSizeData, ViewportPx, PagePx, and DevicePixel
Next stage of refactoring font system. This commit introduces
the font cache task, and adapts client code to use it. It also
cleans up some existing code paths.

- Fonts are only read once from disk while in use (they
  are discarded if the reference count reaches zero, however).
  This saves memory and prevents unnecessary reading from disk.
- It will be easier to add web font support, as all fonts
  are created and managed in a single place and the entire
  pipeline ensures that only one in-memory copy of font data
  is required.

An overview of how the pieces fit together:

FontTemplate - A structure containing everything that
is required to create (and select) font handles. This
structure is shared among all matching font handles
(via Arc).

FontTemplateData - A platform specific structure that
contains the actual font data inside a template (this is
a byte array on Linux/Android, CTFont on Mac).

FontHandle - An opaque, platform specific handle to
a font instance. Each FontHandle contains an Arc<>
reference to the FontTemplate it was created from.

FontCache - This is a separate task, that is responsible
for loading and caching FontTemplate structures. There
is one FontCache per constellation. It is only ever accessed
via the FontContext described below.

FontContext - This is the public interface to the FontCache
and is used by the layout and render code to create font
handles. These must *not* be shared between threads. There
is typically one FontContext per thread/task.
Warning police.
Merge pull request #2776 from glennw/warnings

Warning police.
Remove some mem::transmute calls and reduce some unsafe blocks in parallel.rs.
Print a more helpful debug message when creating an element in the HTML parser.

Using {:?} prints a debugging representation such as

  collections::string::String{
    vec: collections::vec::Vec<u8>{
      len: 4u,
      cap: 4u,
      ptr: (0x7f75670285d8 as *mut ())
    }
  }

which is not very helpful.
Don't fail on parsing URLs in the html parser
Merge pull request #2779 from Ms2ger/print

Print a more helpful debug message when creating an element in the HTML parser.
Merge pull request #2777 from Manishearth/try_parse_url

Don't fail on parsing URLs in the html parser
Update to latest rust-geom
Adopt Rect::contains in compositor hit-testing

This does make hit-testing inclusive in the right/bottom edges, whereas it
was only inclusive in the top/left edges before.
Merge pull request #2780 from eshyong/reduce-untraceables

Made Page.window_size and Page.next_subpage_id Traceable, added trait En...
Use "Fedora" instead of "Fedora Core" in README
Merge pull request #2783 from molnarg/master

Use "Fedora" instead of "Fedora Core" in README
Merge pull request #2778 from Ms2ger/parallel

Remove some mem::transmute calls and reduce some unsafe blocks in parallel.rs.
Merge pull request #2767 from zwarich/shutdown-state

Add a ShutdownState type in the compositor
Merge pull request #2781 from zwarich/compositor-contains

Adopt Rect::contains in compositor hit-testing
Address review comments.
Add a new find_layer_with_pipeline_and_layer_id method

This method will be used to eliminate a lot of the ad-hoc recursive
searches that are present in the compositor layer code.