Ensure gc PULL socket is bound before it gets any messages

also check for errors in gc free function, which would have revealed what was going wrong here.

closes #428