An implementation of the Noise NK protocol for encrypted communication.

 [Noise](https://noiseprotocol.org/) is a framework that defines a bunch of
 related protocols for secure communication. This module implements the
 Noise NK protocol only. Noise NK has a simple message pattern that allows
 the handshake to complete after a single request and response. This code
 has very few branches by focusing on just Noise NK, compared to a
 general-purpose implementation of all the Noise protocols.

 This module is currently limited to `Noise_NK_25519_ChaChaPoly_BLAKE2s`
 specifically, which is probably what you'd want to use when doing
 cryptography in software in 32-bit mode.

 This module takes some minor liberties compared to the Noise spec:

 - Noise uses the terminology 'initiator' and 'responder', whereas this
   module names the roles 'client' and 'server'.
 - Noise simply concatenates binary fields to form messages, whereas this
   module it up to the caller to either concatenate them or encode them some
   other way.
 - Noise limits messages to 65535 bytes, whereas this module does not.