Add an abstraction on top of the libcloud drivers

This allows to keep the cloud descriptions rather generic, with no
libcloud details. If we move to a different library in the future, the
format won't have to change.