LIBCLOUD-367: improve feature metadata

This pull request updates the metadata of ``self.features['create_node']``.

It refactors ``deploy_node`` to not care about the metadata when authentication information is provided, this means EC2 and other users of deploy_node can continue to function even though they don't really support the NodeAuthSSHKey interface.

It turns out that ``deploy_node`` will generate a password for drivers that support ``password`` if auth is not provided. In order to not break that i've had to move the feature into the ``create_node`` implementations. So now any driver that supports ``password`` will behave like ``generates_password`` if no auth information is provided.

It adds a generic helper for making sure the right kind of NodeAuth object has been pased to ``create_node``.

The PR also contains a few minor PEP8 cleanups in files i've touched.