Network Service: Fix VariationsHttpHeadersBrowserTest.TestStrippingHeadersFromResourceRequest

Some major changes in this CL:
1. Adds an extra parameter "array<string>? to_be_removed_request_headers" to
URLLoader::FollowRedirect() so that the browser can pass in this information.
2. Adds a ModifyHeaderURLLoaderThrottle class which can add http headers through WillStartRequest()
and remove http headers through WillRedirectRequest().
3. Adds an extra parameter "std::vector<std::sgring>* to_be_removed_headers" to the
WillRedirectRequest() so that subclass can pass in the http headers to be removed.
4. Adds a member variable |to_be_removed_request_headers_| to ThrottlingURLLoader so that
ThrottlingURLLoader::OnReceiveRedirect() can store the to be removed headers there, and
ThrottlingURLLoader::FollowRedirect() can use that to remove headers by calling
URLLoader::FollowRedirect().

The design doc is at:
https://docs.google.com/document/d/1XAa0V_lKmiZWW7eBCcqdr4DCJSrPjhnvuqispxBGkUw/edit?pli=1

Bug: 841309
Cq-Include-Trybots: master.tryserver.chromium.linux:linux_mojo
Change-Id: I99b80811986714c21f17833b9ccb438f175d9939
Reviewed-on: https://chromium-review.googlesource.com/1086219
Commit-Queue: Jun Cai <juncai@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Reviewed-by: John Abd-El-Malek <jam@chromium.org>
Reviewed-by: Matt Menke <mmenke@chromium.org>
Cr-Commit-Position: refs/heads/master@{#566607}
75 files changed