Make web chat message text selectable
Chat messages could not be selected on the web. The row wrapped every message in a Pressable (react-native-web renders it as a focusable, press-handling element) and the body lived inside a single <Text>; both opt their DOM subtree out of native text selection, so dragging over a message produced no selection at all. - chat.tsx: the web row's decorative Pressable (it had no onPress) becomes a plain View marked userSelect: text. - chat-message.tsx: the web body's outer <Text> becomes a wrapping View so the handle, colon and message are separate inline boxes the browser can select across; the web rich-text segments and the plain-text path opt into selection too (react-native-web renders Text unselectable by default, and the link/mention segments carry an onPress). - atoms.ts: a typed `selectableText` style atom, since React Native declares userSelect only on TextStyle, not ViewStyle. Native is left unchanged. Marking the message Text `selectable` there makes the row's swipe-to-reply gesture engage text selection and steal focus from the chat input, which breaks `.maestro/logged-in/chat-reply.yaml` (verified against the CI artifacts: the selection highlight appears on the swiped row and the input loses its caret). Web has no swipe, so the fix is scoped to it. js/e2e-web/flows/chat-select.spec.ts seeds a message to the PDS, drags across it, and asserts the browser selection contains the message, that the compact row keeps the handle and body on one line, and that a link-facet message selects as one continuous string.