Use saner timeout in host::port_open?

previously, host::port_open? had to issues with its timeout:

1) the timeout of 1s was just too slow for crappy networks. With my
laptop on the office wifi, I am able to consistently exceed this
timeout when starting a TCP handshake with a server in our vmware
cluster.

2) When the timeout failed, it would blow up the entire process, even
if there were additional retries further up the stack.

This commit fixes both of these issues by catching the Timeout::Error
when it occurs, and also by increasing the timeout for the TCP
handshake.