Refactored Java config support to avoid issues with provided dependencies

Before this refactoring, if an app didn't bundle Spring Data etc. dependencies,
Spring will thorw an expcetion when enhancing @Configuration classes that
extend AbstractCloudConfig. This refactoing changes the api to introduce
a level of indirection to avoid the issue (at the cost of slighly more
user code).