Overhaul jsdom.env initialization.

See https://github.com/tmpvar/jsdom/wiki/PR-792 for details.
Document new initialization lifecycle options from #792.
Rewrite the introductions to jsdom.env/jsdom.jsdom.
Remove `document.createWindow` function.

It only exists for backward-compat, and this is a big compat-breaking release.
Remove `jsdom.html`.

It is doing the job that `jsdom.jsdom` should be doing.
Remove `jsdom.version`.

Just use `require("jsdom/package.json").version` instead, like you would for every other Node package.
Hide `level` setting better.

It is now a config option, not an important argument. This changes the signature of `jsdom.jsdom`, and removes `jsdom.level`.
Better handling of missing <html>/<body>/<head>.

This still isn't the actual HTML parser algorithm; for that we'll need a better parser, that correctly creates those elements when they are missing. But now we make a much better attempt to ensure the <html><head></head><body></body></html> structure.

You can also now pass an empty string to `jsdom.env` and it will create an empty HTML document.
Stop exporting more internal APIs.

Removes `jsdom.dom`, `jsdom.createWindow`, `jsdom.browserAugmentation`, and `jsdom.windowAugmentation`.
Add easy method to execute the w3c web platform tests
Make tests available offline

To execute the tests the repo has to be cloned with:
git clone --recursive git://github.com/tmpvar/jsdom.git
or after the initial clone:
git submodule update --init --recursive

Fixes #817.
Make travis clone submodules recursively
Don't use a default jQuery URL in jQueryify.

See http://blog.jquery.com/2014/07/03/dont-use-jquery-latest-js.

This makes the parameter list more reliable (as the URL is no longer optional), and updates the invalid-argument behavior to hit the error path (with no jQuery) instead of the default path (with jquery-latest.js).
Fix XML documents in jsdom

If a XML document is detected, don't wrap it in HTML tags.

Fixes #779.
Use parse5 instead of htmlparser2 as default
Use case insensitive xml matching
Throw error if xml is given with parse5 as parser
Remove unnecessary preprocessHTML

parse5 now takes over that job.
Drop tests for <isindex>

<isindex> is replaced by <label> and <inputs> in the parser stage now.
Use fragment parsing if setting Element.innerHTML

With the new capabilities of parse5 we have to differentiate if we're
parsing a document fragment (i.e. when setting Element.innerHTML) or a
complete document (i.e. the initial parsing stage).