Message authentication

Implements per-message HMAC verification and refactor of message sending functionality into the Message class

Will create separate PR for #130, #132 and #133