Make cloud providers into plugins

This is an RFC and patch offering at the same time.  I think this pattern will make for cleaner code in a number of places, but I thought I would start with something relatively easy as a demonstration.