fixes #8465 Add Digital Ocean Support (this time with fixes)

Sorry, this is a re-request from #1974 .. I messed up and had to re-create the branch.

Please see that for history.. this is intended to become a module *probably* :)
This is meant to be the class name, so it's OK.  The displayed name is set in `provider_friendly_name` which is currently "Digital Ocean" (maybe that needs to lose the space).