Handle the transient TCP connect() failures on FreeBSD [v9.18]
On FreeBSD (and perhaps other *BSD) systems, the TCP connect() call (via uv_tcp_connect()) can fail with transient UV_EADDRINUSE error. The UDP code already handles this by trying three times (is a charm) before giving up. Add a code for the TCP, TCPDNS and TLSDNS layers to also try three times before giving up by calling uv_tcp_connect() from the callback two more time on UV_EADDRINUSE error.
Additionally, stop the timer only if we succeed or on hard error via isc__nm_failed_connect_cb().
(cherry picked from commit b21f507c)
Closes #3451 (closed)
Edited by Ondřej Surý