Excessive reconnects issue resolution

Fixes #868
If a `CryptoPeerConnection` and `CryptoPeerListener` objects are assigned and used throughout the lifetime of the connection of each peer we interact with:

1. Why aren't we honoring the original `pubkey` received when we first connect to a peer? Are we expecting them to use a multitude of keys as they talk to us? Doesn't getting the `pubkey` from the just decrypted message (encrypted with our public key) mean that we're opening ourselves to a MITM attack, in which any `pubkey` used to sign a message will be valid?

2. If we were to honor the initially known `pubkey` of the remote peer, we'd reduce `Cryptor` object creation and destruction overhead for every message received.