One of my pending work items for post-realm merge.
The lowest-level import task is no longer asynchronous, as we don't want
it to span multiple threads to allow easier interaction with realm.
Removing the `Task` spec simplifies a heap of usages.
Individual usages should decide whether they want to run the import
asynchronously, by either using an alternative override or spooling up a
thread themselves.
Was spiritually removed in https://github.com/ppy/osu/pull/16045.
This implementation is mostly taken from that PR's comment thread
verbatim, and now works due to the associated changes to
`OnlinePlayBeatmapAvailabilityTracker`.
The order of operation of imports means that the already-imported
instances are considered most correct (they have usually been populated
using an online source, although that is skipped in tests), so on two
consecutive test imports in a test scene, the second will lose its
online IDs completely.
This aims to ensure that all test beatmaps will have online IDs, which
is the general expected behaviour.