add garbage-collector thread

no longer grab the GIL from a zmq IO thread

instead, send a message on an inproc push/pull channel to a Python thread
which tracks the zmq refs.
update some tests with refcount timings
handle process shutdown a bit better

in the garbage collector

avoids some exceptions during interpreter shutdown errors
Push the gc thread down one layer

better handling of forks if the global `gc` instance is not the thread itself,
but an object with a thread attribute.
Merge pull request #408 from minrk/garbage

Never grab the GIL from zmq IO thread

adds garbage collector Python thread. Store a dictionary of Python objects sent with zero-copy, so that Python gc will never run until after zmq is done with the object.

The thread doesn't start until the first zero-copy send.

closes #389
update perf

single test script for both tests, use argparse, default values, etc.
Merge pull request #412 from minrk/perf

update perf

single test script for both tests, use argparse, default values, etc.
compile CFFI extension at build time for PyPy
cleanup of shared Context doesn't work on PyPy
update tox

adds pypy, fixes deps for various versions
Merge pull request #411 from minrk/cffi-build

compile CFFI extension at build time for PyPy
Merge pull request #413 from minrk/retox

update tox

adds pypy, fixes deps for various versions
Merge branch 'master' of git://github.com/zeromq/pyzmq