refactored how we interface with providers. Added new way to define providers that mimics salt-cloud