feat(ui): render ui to alternative screen (#8084)
### Description
Changes our UI to render in the alternative screen (think `vim` or
`less`)
This provides a few benefits:
- We can render to the entire terminal without worrying about
over-allocating space and removing useful information from the screen.
- Users won't need to scroll up at the end of a run to see the task logs
- We no longer use `insert_before` for persisting task logs. This
function panics if there isn't an available row to render to (#8072) or
rendering terminal logs that have an area that exceeds `u16::MAX`
(#7843). Instead our log persisting story is a "simple"
`stdout.write_all()`.
- Removes hacks added to avoid hitting #7843
We write the logs in a row-wise fasion as `vt100` attempts to optimize
performance by using cursor moves to avoid necessary writes. This
creates problems when printing multiple terminal screens as the cursor
move coordinates will be incorrect.
### Testing Instructions
https://github.com/vercel/turbo/assets/4131117/9746dcd3-188e-48fd-a52d-21d95d0e6e43
Closes TURBO-2979