The legacy getLyrics handler type-asserted api.lyrics to a separate
BatchLyrics interface with a fallback loop for the non-batch case. The
assertion always succeeded (the only implementation is *lyricsService),
so the fallback was dead code -- and had it run, its file-outer /
priority-inner order would have violated the configured source priority.
Add GetLyricsForMediaFiles to the Lyrics interface and introduce a
narrow Provider interface (just GetLyrics) for the single-file plugin
contract. The handler now calls GetLyricsForMediaFiles directly, and
LoadLyricsProvider returns the narrower Provider.