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.
This [`.patch`](http://take.ms/3FItS) file applied to your HEAD works, I think, but for posterity here's the main chunk:

```
func (m *message) MarshalBinary() ([]byte, error) {
	buf := bytes.NewBuffer([]byte{})
	err := binary.Write(buf, binary.LittleEndian, m.Payload)
	if err != nil {
		return []byte{}, err
	}
	payloadBytes := buf.Bytes()

	raw := m.Header.ToRawHeader()
	raw.Size = HEADER_SIZE + uint16(len(payloadBytes))
	raw.Type = m.Payload.Id()
	buf.Truncate(0)
	err = binary.Write(buf, binary.LittleEndian, raw)

	if err != nil {
		return []byte{}, err
	}

	return append(buf.Bytes(), payloadBytes...), nil
}
```