Add -termui=false flag to prevent panic in non-TTY environments

- Added -termui flag to control terminal UI usage (defaults to true)
- Added PTY detection to automatically disable terminal UI in non-TTY environments

Sketch did some weird stuff here, so this isn't particularly co-authored
by sketch.
diff --git a/termui/termui.go b/termui/termui.go
index 4461b5c..322b23d 100644
--- a/termui/termui.go
+++ b/termui/termui.go
@@ -340,7 +340,7 @@
 	defer ui.mu.Unlock()
 
 	if !term.IsTerminal(int(ui.stdin.Fd())) {
-		return fmt.Errorf("this command requires terminal I/O")
+		return fmt.Errorf("this command requires terminal I/O when termui=true")
 	}
 
 	oldState, err := term.MakeRaw(int(ui.stdin.Fd()))