run_server() -> @run_server with eval scoping

With ZMQ now being a module, the eval statement does not see outside code, which was defined outside the module before the call to run_server()

The change has 2 parts: it uses a custom evaluation function "evaluator", which gets passed from the scope where run_server is called - i.e. statements that get executed see definitions outside of the ZMQ module.

The @run_server macro helps by transparently generating this "evaluator" pass-through function.