Reland: Fix race / crash in OnNetworkRouteChanged().

To achieve this some refactoring was done to make it possible to synchronize
access to the DelayBasedBwe in TransportFeedbackAdapter:
- The callback was removed from DelayBasedBwe, it now instead returns its
  result.
- TransportFeedbackAdapter was moved to modules/congestion_controller to avoid
  unnecessary dependencies.

Reenables previously disabled flaky test. Can no longer reproduce flakiness with gtest-parallel and asan/tsan builds.

BUG=webrtc:6427, webrtc:6422
R=terelius@webrtc.org

Review URL: https://codereview.webrtc.org/2378103005 .

Cr-Commit-Position: refs/heads/master@{#14452}
diff --git a/webrtc/modules/bitrate_controller/bitrate_controller_impl.cc b/webrtc/modules/bitrate_controller/bitrate_controller_impl.cc
index bc2f1f6..b336367 100644
--- a/webrtc/modules/bitrate_controller/bitrate_controller_impl.cc
+++ b/webrtc/modules/bitrate_controller/bitrate_controller_impl.cc
@@ -186,22 +186,18 @@
   MaybeTriggerOnNetworkChanged();
 }
 
-void BitrateControllerImpl::OnProbeBitrate(uint32_t bitrate_bps) {
+void BitrateControllerImpl::OnDelayBasedBweResult(
+    const DelayBasedBwe::Result& result) {
+  if (!result.updated)
+    return;
   {
     rtc::CritScope cs(&critsect_);
-    bandwidth_estimation_.SetSendBitrate(bitrate_bps);
-  }
-  MaybeTriggerOnNetworkChanged();
-}
-
-// TODO(isheriff): Perhaps need new interface for invocation from DelayBasedBwe.
-void BitrateControllerImpl::OnReceiveBitrateChanged(
-    const std::vector<uint32_t>& ssrcs,
-    uint32_t bitrate_bps) {
-  {
-    rtc::CritScope cs(&critsect_);
-    bandwidth_estimation_.UpdateDelayBasedEstimate(clock_->TimeInMilliseconds(),
-                                                   bitrate_bps);
+    if (result.probe) {
+      bandwidth_estimation_.SetSendBitrate(result.target_bitrate_bps);
+    } else {
+      bandwidth_estimation_.UpdateDelayBasedEstimate(
+          clock_->TimeInMilliseconds(), result.target_bitrate_bps);
+    }
   }
   MaybeTriggerOnNetworkChanged();
 }