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.
Yes. You are taking the size of `m.Header` which is the expanded header, when it needs to be of `raw`. I didn't mean to imply replacing the payload size. It's definitely header+payload, but you're taking the size of the wrong header.

My comment regarding constant size was about the pointer. If `Sizeof` works the way I remember C working, it'd take the size of the pointer, which will just be a byte or two every time, no matter what it's pointing to. It's irrelevant anyway, since we don't want the size of that type of header.

So summary, this line should be:

```go
size := unsafe.Sizeof(raw) + unsafe.Sizeof(m.Payload)

// or

size := SOME_CONSTANT_WE_SET + unsafe.Sizeof(m.Payload)

```