There was quite a lot of duplicate code for loading DetachedSong objects, with different semantics for "securely" loading local files.