Add synchronous (blocking) publisher and subscriber

We currently implement an asynchronous publisher and subscriber for ZMQ. Some implementations call for a synchronous (blocking) version instead, for example https://code.orangeqs.com/products/prototypes/juice-extensions/-/issues/9.

This is easily doable as ZMQ provides synchronous versions of their sockets and context.