Token based authentication in openstack-keystone

This PR adds support for token based authentication in openstack-keystone. 

Currently openstack-keystone only supports authentication against keystone service using only username and password credentials, using the following rest request 
```
{
    "auth": {
        "tenantName": "demo",
        "passwordCredentials": {
            "username": "demo",
            "password": "devstack"
        }
    }
}
```

This PR adds support for using token based authentication which is translated to the following request to keystone:
```
{
    "auth": {
        "tenantName": "demo",
        "token": {
            "id": "cbc36478b0bd8e67e89469c7749d4127"
        }
    }
}
```

In order to use this new authentication scheme one must override the CREDENTIAL_TYPE property and set it to the new value TOKEN_CREDENTIALS. Here's some sample code
```
            // get authtoken from authentication service
            Properties overrides = new Properties();
            overrides.put(CREDENTIAL_TYPE, TOKEN_CREDENTIALS);

            Set<Module> modules = ImmutableSet.<Module> of(
                    new org.jclouds.logging.slf4j.config.SLF4JLoggingModule(),
                    new org.jclouds.sshj.config.SshjSshClientModule()); 

            ComputeServiceContext computeServiceContext = ContextBuilder.newBuilder(provider)
                .endpoint(endpoint).credentials(tenant + ":" + username, authToken)
                .overrides(overrides)
                .modules(modules)
                .buildView(ComputeServiceContext.class);

```
All you have to do in this case, is instead of supplying a password as a second argument to the `credentials()` method, you supply an authentication token that you have previously acquired.

You should probably rebase this branch since the annotations recently changed in the `AuthenticationApi`