This PR changes the http.server.headersTimeout option to work as http.server.requestTimeout:
Rather than emitting a timeout event, if the timer expires then the server responds with status code 408 and
closes the connection.
An underlying timer is used to check for the timeout rather than checking when data is received. This makes sure the timeout handling is performed at soon as it expires (and this fixes #33440).