It makes a little bit more sense to have GeneratePublicKey as a method
of PrivateKey. In this case code doesn't need to check if caller
provided pointer is nil. Object was created by NewPrivateKey(), so it
code can assume object was correctly initialized.
The old GeneratePublicKey was returning an error when caller provided
pointer was nil. As this possibility is now removed, method doesn't
return error anymore.
* implements SIKE specified here:
http://www.sike.org/files/SIDH-spec.pdf
* methods for both - KEM and PKE - are added
* adds SIKE specific key variant
* tests: known answer tests for sike
* uses cSHKAE from nobs-crypto