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.