feat(launcher): allow multicapabilities to take array of promises

Enables adding `getMultiCapabilities: function(){}` to your configuration file.
The function returns either multiCapabilities or a promise of a
multiCapabilities that is resolved after `afterLaunch` and before driver set up.
If this is specified, both capabilities and multiCapabilities will be ignored.

Also allows specifying `seleniumAddress` in the capabilities/multiCapabilities
object, which will override the global `seleniumAddress`. This allows you to
use a different `seleniumAddress` per capabilities.

Breaking Changes:
`capabilities` can no longer be a promise. Use getMultiCapabilities if you need
to return a promise.
`seleniumAddress` can no longer be a promise. Likewise, use getMultiCapabilities.