fix: free/premium template gate now reads from database (Template.is_premium)

Previously used a hardcoded FREE_TEMPLATES constant that ignored admin settings.
Now Template::isFreeSlug() queries the templates table with a per-request static
cache (no N+1). ResumeResource exposes is_free_template to the frontend.
ResumeCard reads resume.is_free_template instead of hardcoded config tags.

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