Add RetrySend* and RetryRecv* utility functions

Using ZeroMQ in production often requires retrying on an EAGAIN or an
EINTR. Instead of using verbose constructs like this[0] in zmq programs,
it would be very useful if this functionality could be integrated into
the package itself (as for instance the Haskell zmq bindings already do).

[0]: 

```go
var err error
var data string
err = syscall.EAGAIN
for err == syscall.EAGAIN || err == syscall.EINTR {
	data, err = sock.Recv(0)
}
if err != nil {
	// handle actual error
}
```