Extended proxy abstraction, to call certain methods to the worker thread.

Extracted from cl https://codereview.webrtc.org/1766653002/, where
AddOrUpdateSink results in a deadlock.

BUG=webrtc:5426

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

Cr-Commit-Position: refs/heads/master@{#12281}
diff --git a/webrtc/api/peerconnectionfactory.cc b/webrtc/api/peerconnectionfactory.cc
index 852b7a8..c3c120c 100644
--- a/webrtc/api/peerconnectionfactory.cc
+++ b/webrtc/api/peerconnectionfactory.cc
@@ -211,7 +211,8 @@
   rtc::scoped_refptr<VideoTrackSourceInterface> source(
       VideoCapturerTrackSource::Create(worker_thread_, capturer, constraints,
                                        false));
-  return VideoTrackSourceProxy::Create(signaling_thread_, source);
+  return VideoTrackSourceProxy::Create(signaling_thread_, worker_thread_,
+                                       source);
 }
 
 rtc::scoped_refptr<VideoTrackSourceInterface>
@@ -219,7 +220,8 @@
   RTC_DCHECK(signaling_thread_->IsCurrent());
   rtc::scoped_refptr<VideoTrackSourceInterface> source(
       VideoCapturerTrackSource::Create(worker_thread_, capturer, false));
-  return VideoTrackSourceProxy::Create(signaling_thread_, source);
+  return VideoTrackSourceProxy::Create(signaling_thread_, worker_thread_,
+                                       source);
 }
 
 bool PeerConnectionFactory::StartAecDump(rtc::PlatformFile file,
@@ -321,7 +323,7 @@
   RTC_DCHECK(signaling_thread_->IsCurrent());
   rtc::scoped_refptr<VideoTrackInterface> track(
       VideoTrack::Create(id, source));
-  return VideoTrackProxy::Create(signaling_thread_, track);
+  return VideoTrackProxy::Create(signaling_thread_, worker_thread_, track);
 }
 
 rtc::scoped_refptr<AudioTrackInterface>