Fork detection before binding the socket.

In case fork happens before s.bind, we will run into an address in use error.

This fix will alleviate the problem, but it is still less than ideal. -- what if a fork happens before s.bind? 
same applies to the detection before s.recv().

This is related to Issue #440 and Issue #439.
Indeed. After some doc reading the scenario I was trying to catch with this shall never happen; and I can confirm seeing the hang. I'll revert the change.

 I have lost the IPython Kernel that reproduces the race; and still couldn't find a minimal case that triggers the 'socket in use' error on the vanilla code. It's a bit hard to debug since it happens in the forked children and the error is reported only after the kernel is interrupted.