8d6f40ed

By: Michael Lynch <git@mtlynch.io>

Add typed StorageKey and ContentType wrappers for MediaWriter

Replace the bare string key and contentType parameters threaded through
the MediaWriter interface with typed wrappers, mirroring the existing
littlemoments.Filename pattern: each has a validating constructor that
rejects empty input plus a String() accessor.

The typed values propagate through every implementation and caller
(LocalWriter, s3.Writer, WriteConverted, imagepipe, importers, uploads,
s3config.FullPath, and the import command). Because the constructors
return errors, key-building call sites now surface those errors rather
than silently passing strings.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
configuredevShellbackendbackend-devcheck-bashcheck-frontendcheck-go-formattingcheck-go-test-packagescheck-trailing-newlinecheck-trailing-whitespacediagramdocker-imagee2e-testsgo-testsimport-from-tinybeanslint-sqllittle-momentslittle-moments-devx86_64-linux