feat: add tags support for links and quotes
Add a one-to-many tags system for links and quotes with full
CRUD API endpoints. Tags are stored lowercased with no spaces
allowed (hyphens/underscores for multi-word). Tags can be added
at creation time or managed via dedicated endpoints.
Security model: DELETE requires admin API key; POST/PUT allowed
with admin key or within 10 minutes of post creation with
matching username. Includes input validation (max 100 chars,
max 50 tags per resource), request body size limits, and
validate-before-delete on PUT replace operations.