d1636ed9

By: Michael Lynch <git@mtlynch.io>

Make ffmpeg injectable, split media.go, and add animated-GIF tests

Split importers/media.go into three files (media.go, writer.go, avif.go)
to separate import orchestration, storage abstraction, and ffmpeg
conversion. Add a GIFConverter function type so ImportMedia reads the
GIF from fsys instead of the real filesystem and delegates conversion
through an injected function — enabling in-memory tests without ffmpeg.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>