feat: make some changes to the data track subscription to return DataTrackSubscriptionReader instead of ReadableStream
With the previous ReadableStream interface, cancellation gets a little
weird. You have both the "readablestream.cancel()" method as well as the
abort signal passed to ".subscribe({ signal })". The subscribe signal
is important because it allows cancellation of the subscription before
it completes, so that can't be dropped.
So instead add another layer in the mix so this is closer to data
streams. This takes the abort signal and makes cancellation have one
unambiguous "way".