Initial public key loading work

- [x] I think the use of PKCS8/PEM might be wrong?
- [x] Docs
- [x] Tests (need vectors, where do they come from? Just re-process the private keys?)
- [x] Still a bit too much code duplication
We don't appear to have EC support in the private key or public key deserialization. @public do you remember if there was a reason we didn't add support? OpenSSL has an `EVP_PKEY_EC` type, but maybe there's a reason and I've just forgotten.