Fix spec §7 compliance: preserve ?days= in canonical redirects and emit <link rel="canonical">
Fix 1: redirectToCanonical now validates and preserves ?days= query param
when redirecting /profile/:handle → /profile/:handle/likes, matching the
same validate-and-strip-invalid behaviour already used by #show.
Fix 2: #show constructs a canonicalUrl from APP_URL + path + optional
?days= and passes it to the view; show.edge forwards it to layout via
component props; layout.edge already had the <link rel="canonical"> logic.
Adds 5 regression tests (107 → 112): two for ?days= preservation through
redirectToCanonical, one for invalid ?days= on that path, and two for
<link rel="canonical"> presence with and without ?days=.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>