Export Message type and fields

This is so that it's possible to build messages in the client's code
Implement MarshalBinary for Message
Implement basic bulb discovery
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
Read from both broadcast+peer sockets

Mainly for the benefit of lifx-snoop, but perhaps clients care about messages on both these sockets too
Merge pull request #9 from bjeanes/bo/marshal-binary

Client discovery + basic light API