client connect_cb: treat getsockopt failure same as non-zero SO_ERROR.
client connect_cb: treat getsockopt failure same as non-zero SO_ERROR.

According to Stevens' Unix Network Programming, Volume 1, 3rd edition,
Solaris returns -1 with errno set to the pending error when calling
getsockopt() with SO_ERROR on a failed non-blocking connect()
socket. connect_cb now treats this case the same as a non-zero optval.

Additionally, simplify the code that frees the old connect_watcher.

dhess/echoev