feat(viewer): Progressive loading, cascading filters, dynamic UTType lookups
Start server immediately and load metadata in background so the browser
opens right away. Filter dropdowns update as assets arrive with a progress
bar showing loading state. Cascading filters: selecting a year shows only
albums from that year and vice versa. Unavailable type options are greyed
out. Clear filters button resets all.
Replace hardcoded UTI/extension/MIME maps with UTType system lookups in
S3Paths, ExportProviding, and ViewerDataStore. Normalize jpeg->jpg for
backward compatibility with existing S3 keys.
Includes all code review fixes: single-pass filterOptions, CSP header,
thread-safe date formatting, consolidated JS filter functions, extracted
URL decoding helper, removed Google Fonts CDN dependency.