Emit 'close' in OutgoingResponse and IncomingResponse when the underlying stream is closed before finishing

Also add a 'cancel' method to IncomingResponse which simply resets the stream.
I was on vacation since writing this, but I believe it was because we get 'state === CLOSED' when you do response.end(). We use stream.ended to determine if that was the case or if we were CLOSED for some other reason.