Factor net::URLRequest out of extension code

This removes direct dependencies on net::URLRequest (and NetLog) from
most extensions code related to WebRequest and similar APIs, replacing
it with a new WebRequestInfo type which can be constructed from a
net::URLRequest or (eventually) some other source of request
information.

This is preparatory work for making these extensions APIs work when
the Network Service is enabled, where direct usage of net::URLRequest
in the browser will be forbidden.

Incidentally this change also allows for the persistence of frame
data throughout the lifetime of a request, fixing a long-standing bug.

Bug: 721414, 522129
Change-Id: Ib427e5ddac66273bf0b23100c5cb4e74b7613506
Reviewed-on: https://chromium-review.googlesource.com/778461
Commit-Queue: Ken Rockot <rockot@chromium.org>
Reviewed-by: Matt Menke <mmenke@chromium.org>
Reviewed-by: Ilya Sherman <isherman@chromium.org>
Reviewed-by: Devlin <rdevlin.cronin@chromium.org>
Reviewed-by: Karan Bhatia <karandeepb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#523189}
36 files changed