Abstract AsyncSSH crypto API

This commit abstracts the API calls to DSA, RSA, and symmetric ciphers.
Instead of relying solely on PyCrypto for these functions, AsyncSSH can
now use either PyCA, PyCrypto, or a combination of the two to satisfy
all of its dependencies on cryptographic functions.

This commit also adds support for AES-GCM when PyCA is available, using
it as both the encryption and MAC functions when it is selected.
Merge cleanup of PyPI long description from branch master to develop
Add a missing import in the curve25519 implementation
Merge branch 'master' into develop to pick up version bump
Rename GCM encrypt/decrypt functions to reflect that they also sign/verify
Pick up documentation updates from master branch
Fix an error in the encode/decode functions for PKCS#1 DSA public keys
Fix a bug in the unit test code for import/export of RFC4716 public keys
Bump version number to 0.8.4 to update release on PyPI
Switch calls to randrange to be based on SystemRandom() for better security

When picking random numbers for use in DH, DSA, and ECDSA, use the version
of randrange defined in random.SystemRandom() so that we get cryptographically
strong random numbers.
Prepare to merge PyCA support in development branch back to master

This commit prepares for PyCA support to be merged back into the master
branch, bumping the version number to 0.9.0 to update the release on PyPI.

Support for AES GCM as a cipher is also now available when PyCA is installed.
Merge branch 'develop' with PyCA support back to master