Introduce WebRTC component build.

This CL switches all the Chromium dependencies from being direct
dependencies on WebRTC targets to a WebRTC component (which lives
at //third_party/webrtc_overrides:webrtc_component).

From now on, Chromium should never directly depend on WebRTC in
order to avoid issues explained at [1] (this will be guarded
by checkdeps and GN visibility (see [2])) but should only depend
on the WebRTC component.

This should solve a broad range of problems caused by WebRTC being
linked in different shared libraries when is_component_build=true
(from globals and singletons causing hard to debug issues, to ODR
violations and binary size increase).

[1] - https://chromium.googlesource.com/chromium/src.git/+/master/docs/component_build.md#dependencies-between-targets
[2] - https://webrtc-review.googlesource.com/c/src/+/154344

TBR: dcheng@chromium.org
Bug: webrtc:9419
Change-Id: Ice56827db1753f51592165a90c1094b468c8e188
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1874722
Commit-Queue: Mirko Bonadei <mbonadei@chromium.org>
Reviewed-by: Dirk Pranke <dpranke@chromium.org>
Reviewed-by: Tommi <tommi@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#715450}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: cbc90fd09395613d956277e4ae33b5eeea7820d7
diff --git a/absl/types/BUILD.gn b/absl/types/BUILD.gn
index 4e3eeb8..f948fa6 100644
--- a/absl/types/BUILD.gn
+++ b/absl/types/BUILD.gn
@@ -13,7 +13,11 @@
 # https://docs.google.com/document/d/1DgS1-A3rzboTLjpf4m1sqkJgWjnY_Ru2dokk1X1vBDU
 if (build_with_chromium) {
   visibility = absl_visibility
-  visibility += [ "//third_party/openscreen/*" ]
+  visibility += [
+    "//third_party/blink/renderer/platform:platform",
+    "//third_party/blink/renderer/modules/peerconnection:peerconnection",
+    "//third_party/openscreen/*",
+  ]
 } else {
   visibility = [ "*" ]
 }