BaseAudioRecordingSession
An abstract base class for AudioRecordingSession that handles the logic for providing a live "hot" flow during recording, and a replayable "cold" flow after the recording is finished.
This implementation solves the problem of the playback session never finishing by swapping the underlying flow implementation from a hot SharedFlow during recording to a cold, completable flow (backed by a List) once the recording is stopped.