fix(pa-cli): keep partial daemon lines across socket poll timeouts (#3284)
read_line polled the daemon socket with a 50ms read timeout and started a fresh buffer on every poll iteration. BufRead::read_line keeps the bytes that arrived before a poll times out and returns WouldBlock, so the next iteration dropped the start of a slow line and the client parsed only its tail. A truncated tail is unparseable JSON that callers skip, so the command hung until its 30s timeout (15s for the handshake) instead of showing a result, e.g. `list` against a busy daemon sending a large response slowly. Keep the partial bytes in a byte buffer on the client across polls and across reads (probe_daemon keeps using a client after a swallowed hello timeout), fill it with read_until, and decode the line as UTF-8 only when it is complete: decoding per poll drops the bytes again when a timeout lands inside a multi-byte character. Deadlines and error messages are unchanged. Regression test: read_line_keeps_bytes_across_poll_timeouts replays a line split by poll timeouts, one inside a multi-byte character, with no sleeps and no production test hooks.