To be used in the editor, for the beatmap submission wizard.
I've recently been on record for hating "abstract" as a rationale to do
anything, but seeing this commit ~3 months after I originally made it,
it still feels okay to do for me in this particular case. I think the
abstraction is loose enough, makes sense from a code reuse and UX
consistency standpoint, and doesn't seem to leak any particular
implementation details. That said, it is both a huge diffstat and also
potentially controversial, which is why I'm PRing first separately.
- It was being glued in an ugly way that would have prevented sanely
localising it.
- Even on Linux, the filesystem (whichever one the user has chosen out
of the multitude available) still needs to support hard links for them
to have a chance of working.