Move MediaConfig to its own header file and target.

To eliminate circular dependencies, we need to eliminate the include
of media/base/mediachannel.h from api/peerconnectioninterface.h.

MediaConfig is one of the types the PeerConnection api depends on,
since it's part of PeerConnectionInterface::RTCConfiguration. It's
formally a public member, but the intention is that applications should use
accessor mehtods on RTCConfiguration and never access the contents of
MediaConfig directly.

Bug: webrtc:7504
Change-Id: Idfab6f69132d6b90d1628fa4543a393e22db79ac
Reviewed-on: https://webrtc-review.googlesource.com/41260
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Patrik Höglund <phoglund@google.com>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Patrik Höglund <phoglund@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21731}
diff --git a/api/peerconnectioninterface.h b/api/peerconnectioninterface.h
index 3cbf263..7087de6 100644
--- a/api/peerconnectioninterface.h
+++ b/api/peerconnectioninterface.h
@@ -95,7 +95,7 @@
 #include "api/umametrics.h"
 #include "call/callfactoryinterface.h"
 #include "logging/rtc_event_log/rtc_event_log_factory_interface.h"
-#include "media/base/mediachannel.h"
+#include "media/base/mediaconfig.h"
 #include "media/base/videocapturer.h"
 #include "p2p/base/portallocator.h"
 #include "rtc_base/network.h"
@@ -446,6 +446,9 @@
     // standard priority order.
     bool prioritize_most_likely_ice_candidate_pairs = false;
 
+    // Implementation defined settings. A public member only for the benefit of
+    // the implementation. Applications must not access it directly, and should
+    // instead use provided accessor methods, e.g., set_cpu_adaptation.
     struct cricket::MediaConfig media_config;
 
     // If set to true, only one preferred TURN allocation will be used per