Also make PublicKey encodable
Reimplement non-typesafe `verify` fn, call it `verify_raw`.

The typesafe version could not accept illegally padded signatures because
`Signature` is a fixed-width type. Unfortunately such signatures are on
the blockchain, and we need a way to verify them.