NPC chat system cleanup (#2465)* Only parse MM once in `talkToBystanders`* Initial move* Cleanup + Update logic* Update + cleanup `DenizenSpeechContext`* Avoid recreating the tag context + stary newline (commit: 32be8ce)