b8c758c7c9
Defines the abstraction every cover-art source will implement: - Provider — base interface (ID, DisplayName, RequiresAPIKey, DefaultEnabled, Configure). - AlbumCoverProvider — opt-in capability for fetching album covers by MBID. - ArtistArtProvider — opt-in capability for fetching artist thumb + fanart atomically by MBID. - TestableProvider — opt-in capability for the admin Test-Connection button. Sentinel ErrNotTestable / ErrProviderNotFound. ErrNotFound and ErrTransient stay in fetcher.go for now; they move into provider.go in the next commit when fetcher.go is deleted as part of the MBCAA refactor. Compile-time registry: providers register from init() in their own file. Duplicate IDs panic at startup (compiled-in registration is a build-time bug, not a runtime concern). Tests cover: Register adds, duplicate panics, ProviderByID success + ErrProviderNotFound, capability-interface filtering via Go type assertion.