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