feat: pinned topics with category/forum-wide scope (#142)
* feat(db): add pinnedAt and pinnedScope columns to topics
* feat(api): expose isPinned, isLocked, pinnedScope in topic responses
Add isPinned, isLocked, pinnedScope, and pinnedAt fields to both
topicResponseProperties (JSON schema) and serializeTopic() so the
frontend receives pinned/locked state in API responses.
* feat(api): add scope support to pin endpoint (category/forum)
* feat(api): sort pinned topics first in topic list queries
Add CASE-based ORDER BY to GET /api/topics so pinned topics float to
the top. When a category filter is active, both category-pinned and
forum-pinned topics are promoted. On the homepage (no category filter),
only forum-pinned topics get promoted. Secondary sort remains the
user's chosen order (latest or popular).
* fix(test): add pinned_at and pinned_scope columns to tenant isolation test schema
authored by