Client for exchanging Ed25519 keys
This branch adds a client for exchanging Ed25519 public keys with contacts.
The protocol uses two messages: READY and CERT. The READY message tells the contact we support this client. The CERT message contains our nickname, old and new public keys (ECDSA and Ed25519), and signatures to prove that we own both keys. We send a CERT when we receive the first message (READY or CERT) from the contact.
The reason for using two messages is to avoid long retransmission delays for the CERT. If we upgrade before the contact does, we may try to send our READY many times before the contact upgrades, and the retransmission interval may become very long. As soon as the contact upgrades, they'll send a READY, we'll respond with a CERT, and they'll respond with a CERT, so the CERTs will be exchanged quickly despite the long retransmission delay for our READY.
(This sort of thing won't be necessary post-1.0 because #237 (closed) will allow us to postpone sending messages until the contact supports the client.)
State machine: