Implement GREASE for HTTP/2.

Send one extra setting with a random reserved identifier and random
value in the initial SETTINGS frame.  Send a short frame of a random
reserved type, with random flags and payload, after every SETTINGS and
HEADERS frame sent, on the same stream.

The two behaviors are gated by separate field trials.

Send the same greased settings identifier and value on every connection.
Send the same greased frame type, flags, and payload on every
connection.  This is to prevent the retry logic from hiding bogus
servers.

Reserved settings identifiers and frame types are described at
https://tools.ietf.org/html/draft-bishop-httpbis-grease-00.

Bug: 841264
Change-Id: Ie1bd1e4f106bf64020f45171e350d37a10815bc8
Reviewed-on: https://chromium-review.googlesource.com/1207750
Commit-Queue: Bence Béky <[email protected]>
Reviewed-by: Ryan Hamilton <[email protected]>
Cr-Commit-Position: refs/heads/master@{#589168}
12 files changed