Mixin Chat Component
Intercepts every incoming chat message at the lowest level (the private addMessage that all of addClientSystemMessage / addServerSystemMessage / addPlayerMessage funnel into) so Tessera's `chat` trigger can read and optionally cancel it.