refactor 'is this socket usable?' into lumberjack_poll.
This is now used to determine if a socket is readable/writable before
attempting to do so; a timeout will cause a disconnect and retry.