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.
Ah _that_ proxy. Thanks. 

If this isn't being used for just `seleniumAddress`, I'm concerned about the confusion that it will only work with the hosted provider. It would be hard to debug why your capabilities promise doesn't resolve if you're testing on saucelabs, for example.

So, I propose only waiting for `seleniumAddress` here, and adding the ability for `capabilities` to be a promise in runner.js here - https://github.com/angular/protractor/blob/master/lib/runner.js#L221