Performance optimizations and memory management

Added some benchmarks to secure channel and played around with improving its performance, also started using a sync.Pool for message buffers.
`Decrypt`.

Not all public/private key pairs can en/decrypt. They don't all sign/verify either, but our main purposes for private keys so far is identity verification (signing). The Go stdlib correctly makes Priv/PubKey notions have no methods: http://golang.org/pkg/crypto/#PrivateKey -- RSA happens to be an algorithm that can be used for both encryption and signing. Once we have more types of keys we'll have to break this up (`EncryptionPrivateKey`, `SigningPrivateKey`, etc). Maybe add a note to that effect:

```
// Currently, our keys are used for encrypting + signing (i.e. RSA). 
// We'll be separating our key interfaces for each purpose, as the Go stdlib.
```