Rewrote Message for custom serialization

This will improve network IO overhead and allow implementations in other
languages. Additionally includes new Payload class (which should be used as a
superclass) and is used for serialization.