Fix tests (issue #26).
Add cabal-dev to .gitignore.
Use checkers instead of test-framework.
Remove MonadPlus and Alternative instances.
Fix connect, (un-)bind interrupts.

Tests have show, that these calls my be interrupted. api.zeromq.org does
not mention EINTR, but we should handle it anyway.
Ensure backwards compatibility with base-4.5.x.

Thanks Alexander Vershilov for bringing this up!
Use rank-2 polymorphism to secure ZMQ and Sockets.

Modeled after 'Control.Monad.ST' the ZMQ monad traces control flow with
an uninstantiated type variable 'z' which also marks 'Socket' values.
'runZMQ' universally quantifies over 'z' to prevent it from leaking.