feat(tourmaline): add animated bar-chart race for top artists master
Precomputes per-month top-15 cumulative-count snapshots once, then drives a Chart.js horizontal bar chart frame-by-frame with play/pause, a scrubber, and 0.5x/1x/2x speed — letting Chart.js's own animation tween the transition between frames rather than hand-rolling a canvas renderer. Video/screen-recording export is deliberately out of scope. Stops (doesn't loop) at the last frame. Wired into the catalogue tab alongside the dataset explorer. Built by a background subagent (worktree-isolated); like the other stale-based agents it independently re-added monthlyArtistPlays to ListenerProfile/load-profile.ts — resolved via a real 3-way merge this time (git flagged genuine conflicts, not silent duplication), keeping the existing version of that field and taking only the new RaceChart component and its wiring.