These can be tested by adding a `Task.Delay(3000);` at the end of the
`MultiplayerClient.JoinRoom` task. The reason is typically that
`Client.Room` becomes not-null but the join task still hasn't completed
yet, so e.g. the ready button is still disabled.
This paves the way for the framework code quality change
(https://github.com/ppy/osu-framework/pull/4873) which stops exposing
the constructor.
Most of the restructuring here is required to give `PreviewTrackManager`
an adjustable target to apply the global mute.