PublicKey derivation from PrivateKeys

This commit mostly adds the derivation of the PublicKey from the
PrivateKey by the newly exposed Scalar functions.  However, it also
takes the opportunity to harmonise the interface with the SigningKey and
VerifyKey, accepting encoded keys, and returning them via the #to_s
function.

Fixes #14