Sign then Encrypt

Just as a heads up this is wacky as shit because of some weird merging and rebasing…I'm still looking at it but if you see anything odd please let me know.
So, over on slack @Renelvon and I chatted and came to the conclusion that this PR has it right, based on [this paper](http://world.std.com/~dtd/sign_encrypt/sign_encrypt7.ps). Specifically, this PR seems to be correctly implementing equation (23) from Section 5.1 bullet 3:

`A -> B : {{"A -> B", msg}^a}^B`

Or:

1. Data states `A -> B` and also contains the message.
2. Data is signed, then encrypted.

This also preserve's A's privacy.