This patch add the `threadRootEventID` as a parameter to media sending functions and forwards the timeline thread root between various application states to the place where its needed.
The 2 missing items are Locations and Polls which currently don't have any support on the Rust side for being sent within threads. That will come in a separate PR.
* Introduce a `MediaEventsTimelineFlowCoordinator`
* Update SDK API and architecture
* Add a feature flag, add translations
* Move the media events timeline presentation under the room flow coordinator state machine
* Rename `TimelineViewState.timelineViewState` of type `TimelineState` to `timelineState`
* Enabled SwiftLint's `trailing_closure` rule and fix the warnings.
- stop using multiple background task, the appCoordinator sync one is enough for the whole app
- move the AppMeditor to the MainActor
- expose the WindowManager through the AppMediator
- hide sensitive WindowManager API behind a different protocol
- remove the now unnecessary `BackgroundTaskService`
* Lock voice message recording
* Use the VoiceMessageCache to store the recording file
* Rework on some composer toolbar buttons
* Update accessibility labels for voice message recording button
* PreviewTests
* Use Combine to report AudioRecorder state changes
* AudioRecorder is now using AVAudioEngine instead of AVAudioRecorder
* Stop recording when audio configuration changes
* AudioRecorder error handling
* UnitTests
* Use Accelerate to calculate RMS