Rewrite how `jsdom.env` handles config vs. strings.

This fixes #629 and fixes #554; see also #556, #562, #622, and #623.

However, it introduces a backward-incompatible change: `config.html` is no longer auto-detected, i.e. passing a URL or file name there will not work. Instead, `config.url`, `config.html`, and `config.file` are now explicit, whereas passing a string straight to `jsdom.env` triggers the autodetection logic. The autodetection logic has itself gotten smarter, now being based on first URL parsing (checking for both protocol and hostname on the resulting parsed URL), then on trying to read the file, and then if there's an ENOENT error reading the file, it finally puts the result in as HTML.