Explicitly read/write ShadowDOMPolyfill on window

Breaks when executed inside non-top level window
context.
Add Audio and Option constructors
must set `hasEval` to false if the Function() constructor test throws
Merge pull request #288 from Polymer/fix-hasEval

must set `hasEval` to false if the Function() constructor test throws
Add the host property to the ShadowRoot interface

https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#api-shadow-root-host
If parentNode is not correct check for child in childNodes
Gather nodes before removing them in collectNodes
Wrap originalRemoveChild to capture unexpected exceptions
Preserve 'extends' when the ShadowDOM polyfill patches document.register

Before this change this worked well in combination with the custom elements polyfill, however it failed with the native document.register.
Merge pull request #292 from sigmundch/patch-1

Preserve 'extends' when the ShadowDOM polyfill patches document.register
Merge pull request #291 from arv/ie-document-fragment-work-arounds

IE document fragment work arounds
Merge pull request #289 from arv/shadow-root-host-property

Add the host property to the ShadowRoot interface
Merge pull request #285 from arv/audio-and-option

Add Audio and Option constructors
Merge branch 'explicit-global' of git://github.com/timoxley/ShadowDOM into timoxley-explicit-global

Conflicts:
	src/wrappers.js
	src/wrappers/ShadowRoot.js
Fix issue with missing instance properties on canvas context classes
Fix tests for HTMLAudioElement
Merge pull request #299 from arv/fix-audio-test

Fix tests for HTMLAudioElement
Don't use native cloneNode
Merge pull request #298 from arv/fix-canvas-2d-context

Fix issue with missing instance properties on canvas context classes
Implement MutationObserver from scratch

This is an implementation of the MutationObserver without relying on
native MutationEvents nor native MutationObserver.