BrowserStack integration

Add BrowserStack integration based on the existing SauceLabs integration.

This isn't ready to merge yet, though preliminary testing indicates that it is at least mostly functioning.

As currently implemented, no functional changes were made to the SauceLabs integration.  That means that existing SauceLabs users won't see any impact, but there are a few things that are clearly duplicated without particularly good reason.  I'm fine with either leaving that as-is, or pursuing some refactoring for re-use.

When I run with the `geb-browserstack` Gradle plugin, I'm getting the following warnings.  I'm not sure what's causing them.  I don't see them when using `geb-saucelabs`

```
Creating properties on demand (a.k.a. dynamic properties) has been deprecated and is scheduled to be removed in Gradle 2.0. Please read http://gradle.org/docs/current/dsl/org.gradle.api.plugins.ExtraPropertiesExtension.html for information on the replacement for dynamic properties.
Deprecated dynamic property: "browserStackTunnel" on "task ':closeBrowserStackTunnel'", value: "geb.gradle.browserstac...".
Deprecated dynamic property: "inBackground" on "task ':openBrowserStackTunnelInBackground'", value: "true".
Deprecated dynamic property: "browserStackTunnel" on "task ':openBrowserStackTunnel'", value: "geb.gradle.browserstac...".
Deprecated dynamic property: "workingDir" on "task ':openBrowserStackTunnel'", value: "/Users/dcarr/repos/sso...".
Deprecated dynamic property: "applicationUrls" on "task ':openBrowserStackTunnel'", value: "[]".
Deprecated dynamic property "browserStackTunnel" created in multiple locations.
Deprecated dynamic property "workingDir" created in multiple locations.
Deprecated dynamic property "applicationUrls" created in multiple locations.
```