Separable requires

from discussion in #1695

The goal of this pull request is to allow a developer to require all of fog, a single provider, or a single service from a single provider.

So far I've only refactored AWS for proof of concept.