When file is in use, we expect it to presist removal, in other words, fail to delete.
They can now only be instantiated from BeatmapDatabase and are abstract (to avoid misuse).
Moves import code to BeatmapDatabase.