WIP: MarshalBinary

Taking inspiration from @bjeanes' Playground code here: http://play.golang.org/p/uFj1mdBKG6.

What this is attempting to do is build a binary representation from a message (i.e. the opposite of the `Decode` function), in preparation for sending it back down the pipe and out to the world.

I still have no idea what I'm doing here, but this *feels* like the right track.
The header is indeed a constant size. It's the payload which is variable. Since the `raw` is just the header, calling `unsafe.Sizeof(raw)` would not return the correct size for the complete message, which is the size of the header + payload data on the end. This is why I've added together both the size of the header and the payload.

Do you still think this is wrong?