Mixin my class family's Collection module up to Fog::Service's

Fog was not designed to support class families under Fog::Service.
For most cloud providers, this is perfectly understandable.
OpenStack-based providers, however, need the ability to share
code. Otherwise what ensues is the kind of copypasta that we've
seen between the OpenStack, Rackspace, and HP providers.

This fill mixins each dynamically generated Collections module,
per service, walking up the class family until it finds
Fog::Service.
This allows for the "TNG" effort between Rackspace and HP to
implement Fog::Service < Fog::OpenStackCommon:IdentityVx <
Fog::Rackspace::IdentityVx and allowing for full reuse at the
leaf classes in the class family.
Adds test demonstrating old and new Collections mixin behavior
Change Compute default namespacing

Allow for Fog::<provider>::Compute as well as Fog::Compute::<provider>.
Generic solution so as to avoid more hard-coding in compute.rb.

Includes spec based on identity_spec.rb though repurposed for Compute.

For 2.0, the Fog::<provider>::<service>/Fog::<service>::<provider>
should be replaced with more explicit names.  Perhaps
Fog::Builtins::<Provider>::<Service> and
Fog::Extensions::<Provider>::Service or similar.

TL;DR: I'd rather have another layer of modules, containing an intent-
revealing name than a conventon where Fog::<provider>::<service> implies
one thing and Fog::<service>::provider implies another.
This should be done at a higher level in a separate PR.
Allow for `Fog::<provider>::Storage` as well as `Fog::Storage::<provider>`.
Generic solution so as to avoid more hard-coding in compute.rb.

Includes spec based on identity_spec.rb though repurposed for Storage.

For 2.0, the `Fog::<provider>::<service>`/`Fog::<service>::<provider>`
should be replaced with more explicit names.  Perhaps
`Fog::Builtins::<provider>::<service>` and
`Fog::Extensions::<provider>::<service>` or similar.

TL;DR: I'd rather have another layer of modules, containing an intent-
revealing name than a conventon where `Fog::<provider>::<service>`
implies
one thing and `Fog::<service>::<provider>` implies another.
Merge pull request #38 from fog/service_class_family

Mixin my class family's Collection module up to Fog::Service's
Merge pull request #40 from fog/compute_default_namespacing

Change Compute default namespacing
Merge pull request #41 from fog/storage_default_namespacing

Allow for `Fog::<provider>::Storage` as well as `Fog::Storage::<provider>`
bump excon dep
v1.22.0