(feature):Aysc promises in config

Enabling the ability to specify a promise in the configuration. This is primarily required for specifying the browser `capabilities` object that can be generated asynchronously. For example, 
- packages like firefox-profile have an async API for setting preferences for Firefox. 
- Creating a zip file to load as a Chrome extension also have async API. 

This pull request *does not break* existing way of specifying configurations. It simply wraps the configuration object inside a `Q()` promise. This way, the config can also be specified as a promise that resolves eventually before the tests are not. 

Tested this on Windows and Linux. Also update the test cases to reflect this change. New test cases have also been added to ensure that the config files with promises work.  

Issue here - https://github.com/angular/protractor/issues/578