Export Message type and fields

This is so that it's possible to build messages in the client's code
WIP: Implement client.Discover()

This function needs to write out a DeviceGetPanGateway payload and then wait for a response to come back within 5 seconds (probably in some sort of goroutine)
Ensure connection is established when calling client.New()

Having this code run in a goroutine means that it is possible to attempt to call a connection method before a connection is established. Since we need a connection established before we realistically do anything else, we should do the connecting synchronously.

(It's pretty quick, so NBD)
Move client message logic into sendMessage func
Move client message logic back to Connection
Add Connection.Listen

Clients can use this method to 'subscribe' to messages and errors on their connection
client.Discover now discovers lights

It adds these to a client.Lights collection, which then could be used to turn off / on light bulbs
Export SendMessage function