[lib][native][web] Introduce EntityText
Summary:
For the ENS work, we need to be able to "introspect" into robotext, find the usernames, and swap them out. This is much easier to do when have an AST to deal with instead of a string.
This will also allow us to get rid of global_viewer in favor of having the messageTitle code just go through the AST and set isViewer to false everywhere.
In future diffs I'll update notifTexts, messageTitle, and uiName (as well as robotext) to all use this new EntityText framework. We need to swap in ENS names in all of these cases.
Test Plan: There's a small unit test here, but mostly this has been tested in combination with the following diffs
Reviewers: atul, tomek, ginsu
Reviewed By: tomek
Differential Revision: https://phab.comm.dev/D6508