Public function `run`.

Invokes WebPageTest then maps the result data, returns an ES6 promise.

@option uri        {string}  Base URI for the WebPageTest instance, defaults to
`www.webpagetest.org`.
@option key        {string}  WebPageTest API key.
@option location   {string}  WebPageTest location, defaults to `Dulles:Chrome`.
@option connection {string}  WebPageTest connection speed, defaults to `Native
Connection`.
@option tests      {string}  Path to the test definitions JSON file, defaults
to `tests.json`.
@option count      {number}  Number of times to run each test, defaults to `9`.
@option email      {string}  Email address to send notifications to.
@option dump       {string}  Dump intermediate results to file.
@option results    {string}  Read intermediate results from file, skips tests.
@option mapper     {string}  Mapper to use, defaults to `html-comparison`.
@option silent     {boolean} Disable logging, overrides `syslog` and `log`.
@option syslog     {string}  Send logs to syslog, overrides `log`.
@option log        {object}  Logging implementation, needs `log.info()`,
`log.warn()` and `log.error()`.
@option config     {string}  Load options from JSON config file.
function run (options) {
    if (options.results) {
        return map(options);
    }

    return fetch(options).then(map.bind(null, options));
}