refactor: extract shared CommentSheetContent for gallery + story
Both gallery and story comment sheets rendered the same threaded list,
glass input pill, mention autocomplete, and reply banner through
duplicate code. Extract CommentSheetContent as the shared inner view;
each wrapper now owns only its VM, load lifecycle, and post/delete
closures. Adopt the story path's optimistic-clear post flow in both,
and route the gallery path through CommentService to match.
StoryCommentSheet's init signature is unchanged.