Make EdDSA work as documented

Hi,

I'm a bit confused by the `EdDSA` class. It doesn't seem to do what the headers suggest.

For example, `EdDSA::sign()` computes a signature but doesn't store it anywhere.
Here are a few changes to simplify the code and make it work as advertised.
This was intended to use the same source of entropy throughout the whole code base, rather than using Crypto++ elsewhere and libsodium here.