1e52f43e

By: Michael Lynch <git@mtlynch.io>

Centralize image sizes and filename logic in MediaItem

- Add ResizedWidths() type-awareness (video returns [250,150], photos [850,250,150])
- Add ThumbnailWidths() and ResizedFilename() to MediaItem as single source of truth
- Update handlers and import tool to use these methods instead of hardcoded values
- Add NOT EMPTY checks to SQL columns that must not be blank strings

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