I'm perfectly ok with that; to change ZMQ exceptions to only be the four special cases (EFSM,..,EMTHREAD)  and all other posix errors are raised as standard Unix.Unix_error type exceptions. 

Special care should be taken on the windows platform. Something like:
 
```
...
if (errno < ZMQ_HAUSNUMERO) {
  unix_error(...); // Standard posix error.
else {
  switch (error_no) {
    case ENOTSUP: // Apparently on windows platforms
      unix_error(...);
    .
    .
    case EFSM: // Special ZMQ type exception
      caml_raise_with_args(*caml_named_value("ZMQ.ZMQ_exception", ...)
}
```

This will break backward compatibility but the type system will complain if you try to match on ```ZMQ.ZMQ_exception (ZMQ.EAGAIN, _) ```, which must be replaced by ```Unix.Unix_error(Unix.EAGAIN, _, _)```

As the previous patch already broke the backward compatibility, I think this is ok.

Thanks.