Add package header for packet/message header

This is experimental as I don't yet know the best way to do this in Go.
I may also change the content of the data in the header.
And oh look, I'm finally writing unit tests.
Implement methods to encode and decode MessageHeaders