feat(thumbnails): split preview mime types + add HasPreview

Split SupportedMimeTypes into UnconditionalPreviewMimeTypes (preview follows
from the mimetype) and EmbeddedPreviewMimeTypes (audio cover art, may be
absent); SupportedMimeTypes stays as their union for the generator. Add
HasPreview(md) as the single source of truth: unconditional types are always
true, embedded types depend on stored oc.preview dimensions.
This commit is contained in:
Internal Server Error - Gitea: Git with a cup of tea
500 Internal Server Error

Gitea Version: 1.28.0+dev-477-g8b6ad49a5f