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.
the 32 here should be a constant, with a clear warning:
```
// secureChallengeSize is a constant that determines the initial challenge, and every subsequent 
// sequence number. It should be large enough to be unguessable by adversaries (128+ bits), 
const secureChallengeSize = (256 / 8) // in bytes.
```