8f64bcdb5f
New album-cover and artist-art source implementing AlbumCoverProvider, ArtistArtProvider, and TestableProvider. Hits the documented /album-mb.php and /artist-mb.php JSON endpoints by MBID, then GETs the returned image URLs (CDN, key-less). 2 req/sec rate limit per the upstream's documented free/test-key tier; mutex+lastCall serialises ALL HTTP calls regardless of method so JSON metadata fetches and image GETs share the same budget. 429 / 5xx triggers exponential backoff with jitter (250ms × 2^attempt ± 20%) up to 3 retries before surfacing ErrTransient. 401 / 403 surface as ErrTransient (auth issues are config errors, not "this album has no art" — the row stays NULL across passes so the operator sees pending count not decreasing as the diagnostic signal). Artist art is atomic at the JSON metadata step (one round-trip yields both URLs); the two image GETs are independent — partial success returns whatever bytes landed and ErrNotFound only if neither URL is present in the response. Configure() falls back to the documented public test key (2) when the operator's APIKey is empty, per the no-coercive-settings principle. Test connection hits a stable popular release MBID (Pink Floyd, "The Dark Side of the Moon"). theAudioDBBaseURL is a var (not const) so tests can override it.