Refactor testlo, breaking up huge list of tests into smaller functions.

Also fixes any infinite wait loops and adds switch to disable
network-based tests for when testlo must be tested on a firewalled or
otherwise network-restricted environment such as the Debian build
farm.
Ensure error is correctly ignore if SO_REUSEPORT is not supported.

Don't try to use it again if it was reported as unsupported.
Apparently this can only be detected at run-time since kernel headers
may not correspond with the running system.

It could potentially be disabled entirely for Linux, but seems to
cause failures with multicast on OS X if it is not set.