Reject HTTP/2 pushed stream with status code other than 2xx, 3xx, 416.

Pushed stream validation happened in two different places:
SpdySession::TryCreatePushedStream() does validation based on information
in the pushed request, like method.
SpdyHttpStream::ValidatePushedHeaders() does validation based on pushed
request headers, pushed response headers, and client request headers.

The logic that this CL introduces, however, does not fit into either of
these places: it requires the pushed response but not the client
request.  Therefore I am adding it to SpdyStream::SaveResponseHeaders(),
and making it execute regardless of weather the delegate is attached yet
(that is, regardless of whether a client request has been matched with
the pushed stream yet).  This allows the pushed stream with invalid
status code to be reset as soon as that status code is received.

Bug: 903737
Change-Id: I8be128826eb75e384fe7ffb48763b0c0259ccd06
Reviewed-on: https://chromium-review.googlesource.com/c/1377522
Commit-Queue: Bence Béky <bnc@chromium.org>
Reviewed-by: Asanka Herath <asanka@chromium.org>
Cr-Commit-Position: refs/heads/master@{#632252}
5 files changed