Allow html() to operate on shadow roots. Fixes #13342.

The relevant test in core.js was originally

elem.nodeType === 1
This check fails to apply to shadow roots, which are of nodeType === 11. Rather than hard-code that case in the line, however, it seemed better to handle the general case. The html() function should, in theory, be applicable to any element with an innerHTML property. So the test above has been updated to

elem.innerHTML !== undefined
All unit tests continue to pass, and the new check automatically picks up support of shadow roots (as well as any other node types that might someday sport an innerHTML property).

This request includes a unit test that specifically confirms the ability to invoke html() on a shadow root. Since shadow roots are only supported in WebKit (in Google Chrome Canary or Beta), the test is wrapped in a test for a version of WebKit that supports shadow roots. The test is skipped in all other browsers.