feat: convert RemoteDataTrack.subscribe to be synchronous
The api now looks like:
const readableStream = track.subscribe({ signal });
for await (const frame of readableStream) {
// Do something with `frame`
}
Manual cancellation can be done with `signal` OR `readableStream` - they
should act identically.