feat: add signed URLs for verified click tracking
Implement HMAC-signed URLs to prevent click count inflation from bots, or
malicious phishing. Links rendered on the page include a signature; clicks are
only counted when the signature validates. Unsigned URLs still redirect but
don't increment the click counter.
Changes:
- Add ClickSigningKey to config
- Add signing utilities with HMAC-SHA256 (16 hex char signatures)
- Generate signatures at render time in service and handler layers
- Update irclinkURL template function to include signatures
- Update templates and JS to pass signatures through
- Validate signatures in redirect handler before counting clicks