secio, spipe replacement

This PR introduces secio, the replacement to spipe.

- use io.ReadWriter instead of channels + async workers
- decrypt in place (can't encrypt in place, input mangling)
- Encrypt-Then-Mac io.ReadWriter
- a nifty cmd/seccat to try it out! crypto chat with friends!
- commented everything
- improved readability
- improved security:

(1) changed the third message to be the random nonce sent by
    the remote party.

(2) determine order based on identities AND the random nonces,
    which makes it **very** unlikely to fail.

and more
e7edeca -- only `s.localPeer`, as `s.remotePeer` may be nil and `log.Event` doesn't like that