ZMQ heartbeat channel: catch EINTR exceptions and continue.

The zmq heartbeat channel exits when it encounters an
"Interrupted system call", thereby causing the qtconsole to
report that it is not responding, despite the console working
perfectly fine. Observed in a large Qt application embedding
the ipython qtconsole in KDE desktop.
Fixes #2310
Inspired by #501