Since `fog-json` was extracted from `fog` it means if you rely on:
require "fog/provider/compute"
`Fog::JSON` was not defined although it was supposed to be a supported
use case.
This adds the requires for JSON or XML based APIs based on a quick scan
of each provider to declare the required part.
AWS seems to be relying on both. Which is nice.
Providers relying on native code dependencies
Following work on reorganising the requires, there was an inconsistent
approach to where service wrappers are required. (Fog::Compute...)
Since they should be standardised and shared across providers (although
they really aren't yet) they have been moved to `fog-core` gem.
Each provider has their own `lib/fog/{provider}/core` files that is
required by each of their services. These files should all require
`fog/core` which already required most or these.
So this removes the extra cases to concentrate them in core.
The HTTP spec suggests that clients supply the value of Last-Modified that they previously received from the server to If-Modified-Since. When comparing If-Modified-Since > Last-Modified, however, the Mock object would fail to return a 304 for such a case.