Add server-side support for a replay mechanism

I've done things a bit differently to what I proposed on the ML last week, but the spirit remains the same.

The servers that want to provide a replay mechanism must provide a specific endpoint which is NOT specified in the `endpoints` dict but in `replay_endpoints`, which allows those that did not care before to just keep on and ignore this whole mechanism.

There should be only one replay endpoint per name, and I assumed the client would, in case of missing messages from a publisher of name X, connect to the endpoint `replay_endpoints[X]` using the appropriate protocol, and request the missing messages.

(I haven't written the client side yet)

The protocol is simple: connect to the endpoint using a REQ socket instead of SUB, and send a query in the form of a json dict whose fields are still to be documented (seq_id, msg_id, and time, mostly). The server will answer with a multipart message, each part being a message matching the query.