Use WeakPtr in SctpDataChannel.

DataChannelController used WeakPtr to clear outstanding references
upon destruction - except for the case of SctpDataChannel where we
had a pointer+flag for the same purpose. This change updates
SctpDataChannel and FakeDataChannelController to use a consistent
approach.

Bug: none
Change-Id: I0248471c241365a2c0de76afbb37302115650194
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/295820
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Tomas Gunnarsson <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#39464}
diff --git a/pc/BUILD.gn b/pc/BUILD.gn
index 0a2c9ba..faa2b1d 100644
--- a/pc/BUILD.gn
+++ b/pc/BUILD.gn
@@ -883,6 +883,7 @@
     "../rtc_base:ssl",
     "../rtc_base:threading",
     "../rtc_base:threading",
+    "../rtc_base:weak_ptr",
     "../rtc_base/system:unused",
     "../rtc_base/third_party/sigslot:sigslot",
   ]
@@ -2783,6 +2784,7 @@
       "../rtc_base:task_queue_for_test",
       "../rtc_base:threading",
       "../rtc_base:timeutils",
+      "../rtc_base:weak_ptr",
       "../rtc_base/synchronization:mutex",
       "../rtc_base/task_utils:repeating_task",
       "../rtc_base/third_party/sigslot",