added a _createElementNoTagNameValidation function

as discussed in #617
Convert tag names passed to createElement to strings.
Toggle parser `xmlMode` if a XML declaration is seen.

- Added regex to test if the document is xml or not
- Updated comment which describes which html parser is being used
- Removed calls to force attributes to lowercase (in XML they should remain camelCase)
Add a test that the parser lowercases HTML.
First swing at adding window.history.
Rewrite history tests in the newer cleaner style.
Use parentWindow instead of createWindow() in these tests.
Version 0.8.2
Fix for crash when trying to use long html code as file name
Version 0.8.3
Implemented a handler for htmlparser2

The big advantage of this change is that we'll only create a DOM tree once, with a lower memory footprint and a general performance improvement.

There is one breaking change: Previously, all children of a node that raised an error were skipped - now, the parser is `.pause()`d to avoid further events (ie. the rest of the document is skipped).

The Sizzle tests fail for some reason I haven't figured out yet. I'd appreciate any help tracking the issues down.