c909a902

By: Michael Lynch <git@mtlynch.io>

Introduce littlemoments.UploadPath; validate inline instead of via Processable types

Replace uploads.ProcessableImage/ProcessableVideo with inline
validate-then-process calls in ProcessImage/ProcessVideo: those types only
ever proved validation happened before a *separate* caller processed the
file, but now validation and processing happen in one call, so nothing
outside the function observes the intermediate value. Replace the
zero-validation littlemoments.VideoUploadPath and the plain string used for
image paths with one shared, validated littlemoments.UploadPath type
(rejects empty and "/"), threading it from handlers/upload.go's
copyToTempFile through to convert.ExtractPreviewFrameFromVideo, which now
takes the path and duration directly instead of via a convert.ProcessableVideo
interface.