bcd1e6f1

By: Michael Lynch <git@mtlynch.io>

Tighten FileID type and rename OriginalExt to StoredExt

- FileID is now a struct validated against lowercase UUID format on
  construction; NewFileID returns (FileID, error)
- Rename OriginalExt to StoredExt and return error on unknown media type
  to reflect that the extension is post-conversion, not the upload original
- Replace magic numbers 850/250/150 with named display-width constants
- Wire thumbnail width constants into the browse template sizes attribute

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