Add end-to-end encryption (#1).

Encrypt handshakes and transaction requests.

- Uses TripleSec - Salsa 20, AES and TwoFish
- A temporary key is included in the invitation URL.
- The temporary key is used to encrypt the handshake reply, which contains
  a new shared secret for future communication. This is done because the
  first key is included in the invitation URL, who might be sent over an
  insecure channel (like email) and get compromised.

Backward compatibility:
- Invitation URLs without a secret are now rejected.
- Old transaction URLs without a secret are using H(pubkeys... || terms) as the key.
  The terms are assumed to be private and a good source of entropy.