refactor: extract CommentService and FavoriteService
Both gallery and story code duplicated the record-building logic for
comment/favorite creation and the rkey extraction for deletion. Pull
these into stateless service enums so callers only handle their own
optimistic state updates.
Subtle differences (favCount tracking on galleries, viewer state types,
UI layouts, thread endpoint names) stay at call sites to keep gallery
and story concerns independent.