Add data argument to socket messages

This resolves issue https://github.com/lvivski/start/issues/15, allowing data to optionally be passed to Socket messsage handlers. This also formalizes the concept of a Socket Message.

Also added tests. :)