fix(ui): properly handle escape codes in persisted output (#7760)
### Description
Correctly persist bytes sent to the app.
This PR has 3 fixes:
- Support non-utf8 logs
- Support multiline writes
- Support ANSI escape sequences
All these are achieved by putting the bytes through a `vt100` parser and
rendering the resulting screen.
Future work might be to avoid emitting the ansi escape codes and
construct a `Text` widget directly, but this is a larger lift as we need
to stop using `console::Style` throughout the codebase.
### Testing Instructions
Added unit test
Did a quick manual test of `PersistedWriter` to make sure writes get
persisted when they should in `turbo`
Closes TURBO-2655