Export Message type and fields

This is so that it's possible to build messages in the client's code
Implement client.Discover()
Correct bitshifting of tagged field
create three sockets: peer, broadcast and write

peer + broadcast are for reading those messages respectively, and write is for writing out new messages. ListenMulticastUDP does not seem to support Write operations... it just does nothing when Write is called on it.
Pass only site + addressable(true) + tagged(true) in connection.Write

This makes my client code work... but I think what we'll need to do is flag the message as addressable someway. I reckon what we'll need is struct for client message building which is then read and converted into an internal struct
Add tests for tagged MarshalBinary + SetPowerOnMarshalBinary