docs(various): more documentation reorg and rewrite
docs(api-overview): fix title
feat(runner): allow onPrepare functions to return a promise

If onPrepare is a function which returns a promise (or a file which exports
a promise), the test runner will now wait for that promise to be fulfilled
before starting tests.
docs(browser-setup): adds missing colon
feat(sauce provider): allow for custom server addresses when running against SauceLabs.

Use `config.sauceSeleniumAddress` to connect to a custom URL for Sauce Labs.
feat(runner): Add support for async onCleanUp functions

If the onCleanUp function returns a promise, the process will allow it to resolve before exiting. This is useful for performing async operations like writing to a file or calling an API at the end of a test run.
feat(runner/hosted): add support for promises for seleniumAddress and capabilities

Change driverProviders/hosted to resolve promise values
in configuration to allow async jobs in setup. Specifically,
seleniumAddress, capabilities, and multiCapabilities may be promises. Primarily,
this would be for a network call to acquire a selenium host
or to start a proxy server.