Intercept stdout so rogue `println`s still work correctly
I think we'll do this as part of raw mode, since that will screw up your trailing newlines on a println anyway (you need a full CRLF).
On JVM we capture stdout and replace with our own thing. Flip back on close.
On native POSIX I think we can do a freopen to a pipe that we also read. Not quite sure how to flip back.
On native Windows we can SetStdHandle to an anonymous pipe. Flip back on close.
Probably blocked on doing this until we fix #508 since reads from these will need to flow into static logs.
What happens when you write hello\nworld (note the lack of trailing newline)? Do we output "hello\n" and then just wait for a newline before writing "world\n" some frame later?
Answer: yes. JVM can do this sometimes, as newline causes a flush. Also not worth optimizing for anyway.