Delay zmq_init until it needs to be called.

Don't call zmq_init right away; wait until NewSocket requires it.
Add Context.Set() and Context.Get() for options.
Test Context options and fix for zmq_3_x.
Catch init errors for zmq_3_x context options.