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>

Suite timing

Time to Start Worker time Duration Time to finish
Config 0s 1s 1s 1s
Eval 0s 57s 57s 57s
Build 3s 5m55s 1m09s 1m13s
Test - - - -
Deploy - - - -
Suite 0s 6m54s 1m13s 1m13s

Timeline

0s10s20s30s40s50s1m1m10s