feat(shoutbox): add GIF/sticker/clip media + @mention & link support
Lexicon (app.rocksky.shout, Pkl-first):
- add a `gif` embed def (url/previewUrl/alt/width/height) and `facets`
(mention: did/byteStart/byteEnd); make `message` optional so a shout can
carry only a gif. Regenerated JSON + in-app types/registry.
API:
- store gif as flat columns and facets as jsonb on `shouts`; persist both into
the PDS record and DB in createShout/replyShout; return them from every shout
GET; zod schema + migrations 0016/0017.
web + web-mobile:
- KLIPY-powered MediaPicker (GIFs/stickers/clips) wired into every composer,
with a selected-media preview and gif rendering in shout rows.
- @mention typeahead (MentionTextarea, Bluesky AppView actor search, caret-
anchored popup) + facet resolution on submit.
- RichText rendering: @mentions link to profiles (by DID when faceted) and
http links become clickable, in shout rows and reply previews.