Messaging, encryption.

Added support for encrypted messages, ability to define
custom message types.

Change-Id: I32d5372287b415429d1146569437930e99d9bdcc
Move message manipulation into *Message class

IncomingMessage and OutgoingMessage classes to
treat messages as object.

Change-Id: I1080f92d53a670121ef9ac8b0b0e76b3ad817c21