[work in progress] First steps for the clustering

**Do not merge yet, thanks**

This pull requests adds the following features.

* Adds FQDN (Full Qualified Domain Name) in the arbiter class, to uniquely identify circusd nodes on the cluster
* Adds a way to do node discovery via UDP broadcast.
* Adds a way to use a FQDN prefix from the configuration.
* FQDN is now sent in the stats and in event messages.
* Adds AsyncClient and AsyncStatsClient in circus for reuse between circusweb, circus-top and circus-ringmaster
* Adds a json encoder able to deal with sets.

We've been pair programming with @Lothiraldan and @Natim on this one.

To do: 
- [ ] merge the current branch with the latest master to be sure we don't bit rot.
- [ ] tests for the stats changes
- [ ] a command to get the list of discovered nodes
- [ ] documentation for the clustering and for the discovery