Use wrapper nodes instead of overriding methods and accessors

WebKit based browsers are broken and do not use accessors on the prototypes as
required by WebIDL. We therefore have to switch to a model where we try to wrap
the DOM nodes.
Add wrappers for <content> and <shadow>.

In browsers that do not have HTMLContentElement or HTMLShadowElement the
elements will be HTMLUnknowElement. WrapperHTMLUnknownElemen delegates to
the correct wrapper based on the tag name.

Also, fix issue where Mozilla did not set `constructor` correctly for its
DOM wrapper prototypes.
Move files into wrappers subdirectory
Automatically generate and extend wrapper classes.

This works by using reflections of both the prototype object and instance
objects. When going through the instance object we check if the property is
already defined on the prototype chain to prevent defining properties too high
up in the prototype chain.
Make sure that createElement returns a wrapper object

This patch also adds the ParentNode interface to Element, Document and
DocumentFragment.
basic childNodes support
Fix issue where the node was not correctly associated with the ShadowRoot

Fix issue where textContent of CharacterData was broken

Update mocha/chai
Starting to get more tests passing
More tests passing
All tests passing
Fix IE10 support

Turns out IE is the only browser that correctly uses Document for document.
WebKit and Gecko incorrectly uses HTMLDocument (which has been removed from the
specs.)

IE10 + mocha is having some issues. If the tests are run in smaller parts things
work. It seems less agressive invalidation might help as well.
Fix Safari

Turns out WebKit+JSC also fails to set the constructor property. Bringing back
the old FF workaround.
Merge pull request #88 from arv/v2

ShadowDOM V2 Polyfill