Add interfaces for using MediaTransport as the transport for data channels.

Adds the types and methods required for sending and receiving data
channel messages over the media transport.  These are:
 - A DataMessageType to distinguish between text, binary, and control
 messages
 - A parameters struct for sending data messages, which specifies the
 channel id, type, and ordering/reliability parameters
 - A sink for data-channel related callbacks (receive data, begin
 closing procedure, and end closing procedure)
 - A method to set the sink for data channels
 - Methods to open, close, and send on data channels

These methods, combined with the state sink, allow PeerConnection to
implement the DataChannelProviderInterface using MediaTransport as the
underlying transport.

Change-Id: Iccb2ba374594762a5b4f995564e2a1ff7d8805f5
Bug: webrtc:9719
Reviewed-on: https://webrtc-review.googlesource.com/c/108541
Reviewed-by: Anton Sukhanov <sukhanov@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Seth Hampson <shampson@webrtc.org>
Reviewed-by: Peter Slatala <psla@webrtc.org>
Commit-Queue: Bjorn Mellem <mellem@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25454}
diff --git a/api/DEPS b/api/DEPS
index 3fe2bff..def36c7 100644
--- a/api/DEPS
+++ b/api/DEPS
@@ -96,6 +96,10 @@
     "+rtc_base/scoped_ref_ptr.h",
   ],
 
+  "media_transport_interface\.h": [
+    "+rtc_base/copyonwritebuffer.h",  # As used by datachannelinterface.h
+  ],
+
   "peerconnectionfactoryproxy\.h": [
     "+rtc_base/bind.h",
   ],