Allow objects to bypass Service's global config

Up to now you had to accept that if `~/.fog` exists on a system that
it's values were likely to be merged into any service by the reference
to `Fog.credentials`.

One solution was to load your own credentials and pass the settings
through to services. However the cleaning of the Hash still merged the
settings with the global and created a new Hash.

This also encouraged each service to do it's own authentication
internally by passing in values like `username` and `password` then
requesting a token that was isolated to that service.

That made it unsuitable for passing one configuration object that is
shared between multiple services where both may want to change something
such as the latest, valid authentication token.

This change allows any object that responds to `config_service?` with
`true` to bypass the global merging, parsing, coercion etc. and be
passed directly to a service.

That allows services to dispense with primitive obsession and use tested
objects to configure their services.

Resolves fog/fog#1390
Fix Fog::Service spec for Ruby 1.8.7

Subtle parsing difference > 1.8.7
Update docs to be clearer

The examples were for the top level Service builder but the lower level
Provider based version. The higher level one does not accept config yet
(and the object needs to declare which Provider it can work with).
Add doc for new functionality

More than just an example.
Add example for generating a Mock service
Merge pull request #34 from fog/gh1390_allow_external_credentials

Allow objects to bypass Service's global config