feat(protractor): add support for promises in configs

Change driverProviders/hosted to resolve promise values
in configuration to allow async jobs in setup.  Primarily,
this would be for a network call to acquire a selenium host
or to start a proxy server.
Sure:

```
baseConfig.multiCapabilities = [{
    browserName: 'firefox' ,
    version: 'latest' ,

    //To run the browser tests through a proxy server, use the proxy variable
    //Specify the proxyType as 'manual' to use proxy or 'direct' to skip proxy
    proxy: {
          proxyType: 'manual',
          httpProxy: 'localhost:10000',
          sslProxy: 'localhost:10000'
    },
    shardTestFiles: true , // set if specs should be shard across the webdriver instances (of the same set of capabilities)
    maxInstances: 3 // # simultaneous webdriver instances
}];
```

We have a service that dynamically assigns a proxy and port and would need to feed that into the capability object along with another service for getting a seleniumAddress to use.