Switch to extended coordinates

This makes things faster; about 39x faster for verification on my machine.

We pass to homogeneous coordinates and add an auxiliary coordinate, so
a point P = (x, y) is represented now as (X : Y : Z : T), where
x = X/Z, y = Y/Z, xy = T/Z.  The homogeneous coordinates allow us to
avoid any inversion in the Edwards addition, and the auxiliary
coordinate T saves another multiply or so.

Patch supplied by Mike Hamburg <mike@shiftleft.org> against upstream
ed25519.py.  He released his modifications into the public domain.
I rebased and added the short comment and this commit message.
Fix test for extended coordinates
Fix an essential assert

This is part of the verification, so it needs to be checked
always.  Reported by @dstufft.
Reduce d

This gets us another few percent.  Thanks to @swenson for
noticing that it was unreduced.
Make flake8 happy
Merge pull request #14 from gnprice/extended-coordinates

Switch to extended coordinates