refactor(activities): store glyphs in emoji and Lucide names in icon
Activity types now mirror the facet model: emoji remains the glyph fallback and icon is the Lucide name. Routes resolve server-side icon_svg for activities/settings surfaces, while clients render icon_svg || escaped emoji for owner-supplied data.
The read path normalizes a legacy custom record with a glyph sitting in icon in memory, so the maint task is cleanup and never a prerequisite. The write boundary still rejects an emoji passed as icon; only solstone.think.activities writes facets/*/activities/activities.jsonl during migration.