Client discovery + basic light API

Taking inspiration from @bjeanes' Playground code here: http://play.golang.org/p/uFj1mdBKG6.

What this is attempting to do is build a binary representation from a message (i.e. the opposite of the `Decode` function), in preparation for sending it back down the pipe and out to the world.

I still have no idea what I'm doing here, but this *feels* like the right track.
Well, with 14 it doesn't work, and with 13 it does. So I'm going to leave it as 13 unless there's a good reason.