Reland "Add MimeSniffingThrottle for navigation and requests from renderer"

This reverts commit b0f5b21b078c6382136d80d11f477822e6395e28.

The difference from the original patch is a kAborted state in
MimeSniffingURLLoader. DCHECKs will capture if something wrong. Also, Abort()
stops to read the body and receive messages from the source URLLoader. We can
ensure that the loader is stopped to work immediately in this way.

Original description:

> This CL adds MimeSniffingThrottle which can intercept the response in
> ThrottlingURLLoader. Typically mime sniffing happens in network::URLLoader and
> MimeSniffingThrottle is skipped in this case. If a request goes to a service
> worker or other interceptors, the MimeSniffngThrottle intercepts the response
> when a set of the mime type and the url is eligible to sniff the mime
> type. Sniffable mime types are defined in net::ShouldSniffMimeType(). When a
> mime type for performance sensitive components like "text/html",
> "text/javascript",or "text/css" is provided, it doesn't sniff.

Bug: 858975
Cq-Include-Trybots: luci.chromium.try:linux_mojo
Change-Id: I51648def32e147eb127ec6efbb59ed2353cfba56
Reviewed-on: https://chromium-review.googlesource.com/1160133
Reviewed-by: Kinuko Yasuda <[email protected]>
Commit-Queue: Makoto Shimazu <[email protected]>
Cr-Commit-Position: refs/heads/master@{#580143}
29 files changed