Switched everything to use cryptography instead of pyCrypto

Motivation:

* Adds PyPy support
* Performance improvement
* OpenSSL and friends are better audited than PyCrypto
* Easier windows install flow (Cryptography provides statically linked wheels
  on Windows)

This PR is basically complete on the code side, of course it can always use
more review :-)

Tests all pass locally (tested with PyPy!)

Still needs some docs work, and to figure out how to do this with the version
numbers so people's stuff doesn't suddenly get broken.
For PyPy :-)

On Mon, Sep 15, 2014 at 5:22 PM, Paul Kehrer <notifications@github.com>
wrote:

> In tests/test_client.py:
>
> > @@ -287,14 +289,10 @@ def test_6_cleanup(self):
> >          self.tc.close()
> >          del self.tc
> >
> > -        # hrm, sometimes p isn't cleared right away.  why is that?
> > -        #st = time.time()
> > -        #while (time.time() - st < 5.0) and (p() is not None):
> > -        #    time.sleep(0.1)
> > -
> > -        # instead of dumbly waiting for the GC to collect, force a collection
> > -        # to see whether the SSHClient object is deallocated correctly
> > -        import gc
> > +        # force a collection to see whether the SSHClient object is deallocated
> > +        # correctly
> > +        gc.collect()
>
> Why 3 calls to collect?
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/paramiko/paramiko/pull/394/files#r17569651>.
>



-- 
"I disapprove of what you say, but I will defend to the death your right to
say it." -- Evelyn Beatrice Hall (summarizing Voltaire)
"The people's good is the highest law." -- Cicero
GPG Key fingerprint: 125F 5C67 DFE9 4084