Reported at https://osu.ppy.sh/comments/3681620, with appropriate levels
of rage bait (DID ANYONE TEST THIS?!?!?!?!?!?!?!?!?!111!!)
Reasoning for this is that without this, users' skin names can be
dropped after an external edit because they're never persisted anywhere
outside of realm.
The only other choice I see is to stop re-populating skin metadata from
the `.ini` upon completing an external edit, which is very doable but
seems worse than this. Dunno.
This one is quite dumb.
`OsuGame` uses
[`loadComponentSingleFile`](https://github.com/ppy/osu/blob/15878f7f9fc7088494d3b66e98a7bc1004a1a06d/osu.Game/OsuGame.cs#L1228)
to load the `ChannelManager`. Importantly, this process does _not_ add
the component to any place in the hierarchy where it would normally be
disposed - this includes `InternalChildren`, but _also_ a lesser known
list of [currently-loading
components](https://github.com/ppy/osu-framework/blob/cfb0d7b4b673583f0cf56273e94352769aa5bc9a/osu.Framework/Graphics/Containers/CompositeDrawable.cs#L316-L323)
(those which have been sent through a `LoadComponentAsync` call).
The end result of this is that, `ChannelManager` creates the
`IChatClient` in its constructor, expecting to be able to dispose it,
but `Dispose` is never called!
And the failure case here is that `PollingChatClient` creates a
background task to continuously poll the API, unfortunately keeping a
reference to the rest of the world in the process.