Remove some code duplication in the Compositor

It is possible to share the code which creates root layers.
M1456, Implement MIME sniffing initial Step
Sending exit message to devtools to exit.

Accepted and closed incoming streams

Added header to for constant use.

Removed extra spaces.

Corrected spacing to conform to coding standards.

Corrected spacing to conform to coding standards.

Corrected spacing to conform with coding standards.

Moving new import next to old import for devtools_traits as specified in comment.

Removed method definition to include as inline code and changed to iter_mut.

Using loops to exit devtools on server exit message and disconnected message to simply break as suggested in the comment.

Removing TODO comment for completed functionality.

Moved the operation for exit of devtools on servo closing outside the match loop.

Removing trailing ';' and adding new line before connection closing loop.
Add contentDocument support for HTMLIFrameElement. Fixes #3808.
Iframe resource file moved to resources dir so it's not picked up by test harness (and does not fail).
auto merge of #3953 : neojski/servo/implement-HTMLIFrameElement.contentDocument, r=jdm

Because of #2122 I cannot write test for this right now because it will be failing randomly due to that iframe issue. However, if it doesn't fail due to that issue a test like this:

```html
<html>
  <head>
    <meta charset="utf8" />
    <script src="harness.js"></script>
    <title>Iframe contentDocument test.</title>
  </head>
  <body>
    <iframe src="test_iframe_contentDocument_inner.html" id="iframe"></iframe>
    <script>
      waitForExplicitFinish();

      var timeout = 100;
      var iframe = document.getElementById('iframe');
      function test_contentWindow() {
        if (!iframe.contentWindow) {
          // Iframe not loaded yet, try again.
          // No load event for iframe, insert bug number here.
          setTimeout(test_contentWindow, timeout);
          return;
        }
        is(iframe.contentDocument.getElementById('test').textContent, 'value');
        finish();
      }
      test_contentWindow();
    </script>
  </body>
</html>
```
where inner is simply:
```html
<html><body><div id="test">value</div></body></html>
```
passes.

I have added `SameOrigin` method to the `UrlHelper`. I wanted to reuse it in [`constellation.rs` same_script check](https://github.com/servo/servo/blob/f0184a2d011e12845258a242d2d2f6b8b504a28d/components/compositing/constellation.rs#L625) but I it didn't want to compile saying

```
error: unresolved import `dom::urlhelper::UrlHelper`. Maybe a missing `extern crate dom`?
```

So I didn't include it in this PR for now.

There is more discussion about the cross origin iframes in [another issue](https://github.com/servo/servo/issues/3939). In this PR I just added same origin check.
Use Cell::as_unsafe_cell in Reflector::rootable.
empty enum replaces c_void

fix incorrect type aliasing logic

remove trailing semicolons

remove trailing semicolons

embedding: empty enum replaces c_void
Fix wpt readme for mach changes
Use freetype-sys on Linux.

See:
https://github.com/servo/libfreetype2/pull/2
https://github.com/servo/skia/pull/38
https://github.com/servo/rust-azure/pull/114

Let’s close #3867, even though this only works around and doesn’t fix the underlying issue.
embedding: remove eutil::fptr_is_null, fix #3967, add Option<> to fptrs
List bzip2 as a requirement in README.md

… but not for Homebrew or MacPorts, OS X which apparently ships with it.
Update Cargo.lock files for Android rustup fixes

r? @glennw
Update GLUT for rustup fixes

Pulls in servo/rust-glut#49
Use RefCell in DOMRefCell to reduce duplicated code.
Use the correct Rust path in Android packaging
Disable the iframe content test due to #3986.
auto merge of #3985 : mbrubeck/servo/android-green, r=larsbergstrom

r? @glennw
embedding: change Option<> unwrapping for fptrs to use match
embedding: convert callback Option<> matching to map()