2d2a1db0

By: Michael Lynch <git@mtlynch.io>

Reserve PhotoFiles for true photos; add MediaFiles.Thumbnails

Animated photos never consume a display-size variant, so they no longer
flow through PhotoFiles: ProcessAnimatedPhoto and PhotoFiles() now operate
on plain MediaFiles, and PhotoFiles() panics on any type but photo. This
makes "is a PhotoFiles" mean exactly "has a display-size variant," dropping
the dead zero-value DisplaySize field for animated items.

Add MediaFiles.Thumbnails() and route writeThumbnails and the tinybeans
import through it, replacing the duplicated desktop/mobile slice literal
and the two transposable positional args.

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