- Add a download failed event to BeatmapManager - Make DownloadButton aware of all 3 possible download states - Change button appearance based on each state
They were previously breaking the two-class-per-file rule.
Also moves delete and action logic to a shared implementation
Results in incorrect default formatting.