JCLOUDS-707: Improve SSH key pair creation in DigitalOcean

https://issues.apache.org/jira/browse/JCLOUDS-707

The SSH key pair creation  in DigitalOcean has been improved to avoid having multiple public keys with the same fingerprint:

* Create the SSH key pairs before creating the nodes.
* Only auto-generate key pairs if the user has not configured a public key.
* If the user has provided a public key, try to find one with the same fingerprint and reuse it.
* To make the migration to v2 easier, now the fingerprint of the public key is used for the name of the key pair.
Ah, I get it now :) Yes, the current order is right, because although you can create the key pair defined by the public key in advance, having that option present does *not* force you to have a private key. And by placing this code first, we could be creating a key pair and then failing with an exception if no private key is set, having to explicitly rollback the key pair.

This way we avoid creating unnecessary key pairs if no private key is configured. Sounds good?