Both sides of the chat now generate secrets based on their private key
and the other side's public key. They encrypt each message with a nonce
before sending it, and use the nonce in the decryption.
This _does_ mean that the responder has to specify the starter's name
now so that they can select the proper public key for encryption.
This cleans up some types, moves some typing to loading and saving keys,
uses clearer object names, and passes a crypto system into chatter.
This lays the groundwork for adding encryption.