http: More useful setTimeout API on server

http: More useful setTimeout API on server

This adds the following to HTTP:

* server.setTimeout(msecs, callback)
  Sets all new connections to time out after the specified time, at
  which point it emits 'timeout' on the server, passing the socket as an
  argument.
  In this way, timeouts can be handled in one place consistently.
* req.setTimeout(), res.setTimeout()
  Just aliases to req.socket.setTimeout() or res.socket.setTimeout(),
  but without having to delve into a "buried" object.
* server.timeout
  Number of milliseconds before incoming connections time out.
  (Default=1000*60*2, as before.)

Furthermore, if the user sets up their own timeout listener on either
the server or the socket, then the default behavior (destroying the
socket) is suppressed.

Fix #3460