Refactor broker into publisher and subscriber

The best way I think is to do a lazy connect, wait for the first handler to register to connect the socket. I think that 0MQ is not going to return any network error during connect (e.g. unreachable peer), so it doesn't matter to do it later with that regard. At least that's what I've seen with the Python binding, it only complains about very bad errors (malformed URIs for example). On the other hand, some exceptional errors that can't be avoided earlier (like the URI example) are going to be more difficult to handle in this case, but they may be irrecoverable errors anyway (out of memory, file descriptors exhausted, ...)
Another option is to have a empty receive (the timeout is a bit tricky in this case, unless it can be considered just a hint).
The last alternative is to simply receive the message without creating the zeq::Event. Maybe there's a way to read and discard directly from the 0MQ API, but I don't find it.