Fix wrappers for custom elements

We now associate the prototype object with the wrapper constructor instead of
the native constructor. This is better because constructor is not as reliable as
using the prototype.

Generate the wrapper constructor lazily. This allows the wrapper constructor to
be generated on the fly based on the prototype chain which is required for
custom elements.

Use __proto__ as a hint for IE which does not have __proto__.
Merge pull request #1 from arv/custom-elements

Custom elements
Fix DOMImplementation and ParentNode interface
Merge pull request #9 from toolkitchen/fix-document-js-typo

Fix DOMImplementation and ParentNode interface
Do not expose getYoungestTree as a global.

This fixes a TODO

Also, remove some out of date TODOs.
Merge pull request #10 from arv/hide-get-youngest-tree

Do not expose getYoungestTree as a global.
Expose a rewrap function

  rewrap(node, wrapper = undefined)

This allows other polyfills to reset the wrapper of an existing node either to
a new wrapper (WrapperShadowRoot does this) or to undefined (custom elements
need this).
Merge pull request #11 from arv/add-rewrap-function

Expose a rewrap function
Hide more globals/public properties
Merge pull request #12 from arv/fix-more-todos

Hide more globals/public properties
Remove the Map since it wasn't being used any more
Fix issue with Safari etc where we tried to reconfigure a non configurable
property.
Merge pull request #13 from arv/remove-map

Remove the Map since it wasn't being used any more
Merge pull request #15 from arv/more-safari-fixes

Fix issue with Safari etc where we tried to reconfigure a non...
Make side table name unique and not expose the underlying name
Merge pull request #14 from arv/better-side-table-name

Make side table name unique and not expose the underlying name
Add support for cloneNode
Add support for document.{documentElement,body,head}
Add support for parentElement
Merge pull request #17 from arv/clone-node

Add support for cloneNode