Set up a timeout handler after connection

It seems that timeouts were only handled while connecting, but not after.

- Hook up a timeout handler that destroys the connection and passes in an
  exception. This should in turn trigger the existing 'error' and 'close'
  handlers.