client: create control endpoint socket
add ping/pong functionality to client server

This is more interesting than you might think. It adds in all of the
infrastructure for communicating over the network and getting responses.
make ServerBrowser IOLoop aware

ServerBrowser ran server discovery on a separate thread meaning that
{add,remove}_server was called on a different thread than the main one.
This would lead to surprising results when trying to use the IOLoop
servers and clients.

For the sake of simplicity of use, ServerBrowser now does the required
magic to ensure that {add,remove}_server are called on the right thread.
To do this it needs an IOLoop instance.
add simple example of server and client