split message rendering
Goal: have different message objects for different purposes, to be able to filter them, group them, etc, as we want, while also decoupling some parts from the raw rendering code to make it testable and easier to typecheck.
Branch not to be merged until it’s out of WIP, of course.
Known bugs:
- Broken highlights
- No special color for history messages