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.
Good point. And this can be something a bit complex. The root issue is that DigitalOcean does not allow to create key pairs with the same fingerprint, so if a key with an existing fingerprint is used, then the existing key pair must be used instead of creating a new one. That's what I've implemented.

The problem comes when cleaning up the key pairs: DigitalOcean does not relate the key pairs to the nodes. They're only used during creation to populate the public key to the node, but from the API point of view, key pairs are independent entities, not related to any node.

* If we cleaned up the key pairs when deleting the nodes (the ideal approach): How we identify which key pair correspond to the node? The name is a strange option as key pairs can be reused. The key pair would exist until a node with the same name is deleted: depending on the node you delete the key pair would be removed or not. Weird. The same argument applies to using groups or prefixes for the names
* The other option is to delete them after the nodes have been created, which is what I currently implemented.

However, I've just noticed that when creating nodes, one may create N nodes concurrently, and this method just launches the corresponding futures. With the current approach, the key pairs can be deleted while some nodes are still being created, which is bad.

I'll have to change the implementation to register a callback that cleans up the key pairs when all nodes have been created.