fix(pty): disable echoctl for child processes (#8892)
### Description
Copying and pasting from #7109:
Disable ECHOCTL for the pseudo terminal that we start:
ECHOCTL
(not in POSIX) If ECHO is also set, terminal special
characters other than TAB, NL, START, and STOP are echoed
as ^X, where X is the character with ASCII code 0x40
greater than the special character. For example,
character 0x08 (BS) is echoed as ^H.
This will remove the ^D that gets generated from the EOT when using a
PTY. Using PTY still does generate a leading \n as EOT is only respected
if it immediately follows a newline. portable_pty tries to prevent
failed EOT by emitting a \nEOT on drop in case end users didn't end the
last write with a newline.
### Testing Instructions
Verify that `^D` no longer appears in output:
```
[0 olszewski@chriss-mbp] /tmp/echoctl-test $ TURBO_UI=0 turbo_dev --skip-infer build --force
turbo 2.0.10
• Packages in scope: @repo/eslint-config, @repo/typescript-config, @repo/ui, docs, web
• Running build in 5 packages
• Remote caching disabled
docs:build: cache bypass, force executing 9240c8b370dcb1ac
docs:build:
web:build: cache bypass, force executing 253f5ed6d7afcf7f
web:build:
web:build:
web:build: > web@0.1.0 build /private/tmp/echoctl-test/apps/web
web:build: > next build
web:build:
docs:build:
docs:build: > docs@0.1.0 build /private/tmp/echoctl-test/apps/docs
docs:build: > next build
docs:build:
web:build: ▲ Next.js 15.0.0-rc.0
docs:build: ▲ Next.js 15.0.0-rc.0
```