Major refactor

Now we can persist downloaded song data and play them back without opening
each song at once.