Improve `kernel.ready` to allow tests to run with socket.io loaded.

- Fall back to single-user mode if a WebSockets connection can't be
  established regardless of whether socket.io is loaded.
- Only attempt WebSockets connections when served by http or https.
- Switch to single-user mode if a WebSockets connection fails.
- Give the `applicationComponent` parameter priority and start a
  single-user session with that application when provided.
Allow the loader to configure `kernel.initialize` and use it for tests.

- Accept a `vwf` global in the loader to provide configuration settings.
- Parse the `application` query parameter in the loader instead of in
  the kernel.
- Automatically determine the set of drivers to load and `require` them
  in the kernel.
- Specify the default driver set in the kernel instead of in the loader.
- Provide a `ready` callback from the kernel after the drivers have been
  initialized and the kernel is ready to accept actions.
- Use the loader in the tests rather than having each test load the
  kernel and drivers itself.
Wrap utility libraries and load with RequireJS.

- async.js
- crypto.js, md5.js
- alea.js, mash.js
- rAF.js
Wrap driver support libraries and load using RequireJS.
Wrap socket.io and load using RequireJS.
Load the Google Earth API using RequireJS.
Remove obsolete admin view.
Replace `vwf` in the loader and tests with `kernel`.
Add warning comment and minor work-around for a direct driver reference.

Fixes #1621.