The default bufio.Reader buffer (4096 bytes) is too small for large
ServerQuery responses (channellist, clientlist), causing runtime panics
that leave the viewer in an unrecoverable state.
Changes:
- Increase SSH read buffer from 4096 to 64KB to handle large responses
- Add done channel to SSHClient for clean keepAlive goroutine shutdown
- Stop orphaned keepAlive goroutines after reconnect to prevent leaks
- Add panic recovery in exec() so panics are handled as errors
- Treat recovered panics as connection errors to trigger reconnect
- Wrap HTTP handlers with recovery middleware as a safety net