util: Improve IP-based pingers

At least hopefully this is an improvement.  The changes allow IP-based
pingers to work correctly under Jython on Mac OS and Linux.  With any
luck it doesn't break other OSes (e.g., Windows).

Changes:
* Allocate a new socket for each attempt at binding a local port.
  (Jython doesn't seem to allow subsequent binds if one has already failed)
* After using the oddball local IP 127.127.127.127, we fall back to using
  the more standard one, since not all platforms support any 127.x.y.z.
* Set the listening and reading sockets to nonblocking mode.  Jython's
  select() seems to require it.
of_01: Make listen socket nonblocking

Hopefully this will have no effect except to make it work on Jython which
seems to require sockets used with select() to be nonblocking.