fix allocate_tcp_port()
fix allocate_tcp_port()

On both OS-X and Linux, this would occasionally return a port which was
actually in use, causing a subsequent listen() to fail (with
EADDRINUSE). The issues are are platform-dependent, and explained in
detail in the new function body.

The fix requires us to actually listen() on the newly-allocated socket,
twice, and keep trying until we get a port that works. There is a
hard-coded limit of 100 tries, in case the system has so many open
connections that all the randomly-allocated port numbers fail.

Closes ticket:258.

david415/foolscap,warner/foolscap