[aws|storage] Add Fog::Storage::AWS#delete_multiple_objects
[aws|storage] Add mock for Fog::Storage::AWS#delete_multiple_objects
[aws|storage] Little improvements to delete_multiple_objects tests
[aws|storage] Add Fog::Storage::AWS#delete_multiple_objects
[aws|storage] Add mock for Fog::Storage::AWS#delete_multiple_objects
[aws|storage] Little improvements to delete_multiple_objects tests
Added versioned delete_multiple_objects support

Added the VersionId support in the delete_multiple_objects method.
Assume that all object versions are specified in the versionId hash.
The hash maps an object name to an array of versions. If a multiple
versions are to be deleted, the caller must insert the object
multiple times into the object_names array and insert all the versions
into the array associated with that object_name.
[Brightbox] Refactors credential code in Compute
OpenStack floating_ip (aka address) test fixes

Updates to the OpenStack address tests so that:

 * The tests cleanup after themselves when executed in Real mode.
   Previously running these tests in Real mode would leak servers
   and floating IPs.

 * DRY things up a bit.

 * Make use of the floating IP we create in subsequent tests. Previously
   the last floating IP in the full list was used. This could be
   problematic in some cases.

--

Also adds a missing Mock class for the release_address request so
that FOG_MOCK tests continue to pass.
fixes issue#1313 ~ Creating user via `Aws.iam.users` ignores `:path`
[Brightbox] Extracts authentication connection

Moving the URL for the authentication endpoint up to the instance level
rather than hiding the logic in the method. Eliminate the need for
options on a private method.

Also cleaned up references to credentials in same method.
[Brightbox] Refactors how tokens are requested

Extracting existing strategies out of Compute
[Brightbox] Moves tokens to CredentialSet
[Brightbox] Extracts parts of request out of compute

* Adds simple helper to get token for service
* Low level request #request_access_token is provided to request
  access tokens
[Brightbox] Adds support for refresh tokens

Passing in a refresh token to `Compute#new` will allow the token to be
used to request new access tokens as the original authenticated user so
the username and password do not have to be stored locally.
[Brightbox] Adds option to disable token management

Original request method handles missing tokens and the first
Unauthorized response by requesting a new access token.

This magic can be disruptive for clients so can be disabled by passing
in `:brightbox_token_management => false` to the Compute service.
[Brightbox] Adds means to update scoped account

A Compute instance encapsulates a connection for a client to the
Brightbox API. Users can have multiple accounts but there was no easy
way to switch between them when account had to be passed in via the
initializer.

Now the scoped account can be set on an existing instance which overrides
any configured setting but it can be reset if needed.

The #request method still can accept `account_id` as an option which
again overrides the previous settings.

Finally the parameter is now correctly sent as a query string parameter
not part of the API request JSON.
[Brightbox] Moves more of public API into Shared

Moved a lot of helper methods to Shared so that the Mock version of the service
is not erroring with missing methods even if requests are not implemented.
[Brightbox] Guards unimplemented mock tests

This guards the newer tests just added that rely on unimplemented mocks
Merge pull request #1320 from brightbox/refresh_tokens

[Brightbox] Refresh tokens