First implementation of minimal Broker API

I also think that creating the context in the broker may be a problem. But this is an implementation detail related to 0MQ and leaking it through the API should be avoided as much as possible.
Instead of context I would call the class Traits. I don't know very well how to handle the storage of objects inside this Traits class but there should be a constructor that doesn't require traits at all (or takes a default constructed ones).
I'd opt for creating the default zmq context as a global variable (singleton, static variable,... your call), however I'm not aware of the potential risks of doing that (besides the usual static de/initalization fiasco and multi-threading pitfalls that are easily solved using free function to return the context, which is static local variable to the function)