Adding support for message level encryption

This is for #25 and adds features to support confidentiality, integrity and authentication. See the RFC here: https://gist.github.com/armon/7159161