Preserve script node attributes.

Some sites such as Dropbox.com use attributes on script nodes to
define how they should be ran (or include non-js script nodes).

Previously, only the innerHTML and src attributes would be preserved,
often triggering errors or broken functionality.  This change
uses the cloneNode function to copy the node while preserving
all attributes.

cloneNode is not supported by FF before 13, so if legacy support is
desired an alternate solution will have to be found.
Automatically load head assets

Previously assets in the head of the preloaded page wouldn't
be loaded, as only the body was copied.  After this change,
any tag in the head of the previous page, not in this page,
is added to the head after the switch.
Remove head elements which are not in the new page
Bind events to the document, rather than each link
Copy attributes (e.g. classes) from the new head and html elements to the old one
Spelling
Use null rather than false to make it a bit more clear that newUrl is not a boolean parameter
Allow event cancellation

If someone has called `e.preventDefault()`, or returned false from
an event handler in IE8, respect that cancellation.
Remove and readd all head elements to ensure script tags get executed again.  Don't remove attributes to not break Typekit and the like.
Merge branch 'drop-in'