The Java ZooKeeper client uses `ErrorResponse` as the response type for
`addWatch`, which expects a 4-byte error code in the response body.
ClickHouse Keeper was sending an empty body, causing the client to get
`EOFException` when trying to read the error code, which triggered a
disconnect. This broke CuratorCache startup and any Java application
using persistent watches.
The fix adds the 4-byte error body to `ZooKeeperAddWatchResponse`,
matching what real ZooKeeper sends (`new ErrorResponse(0)`).
Also fixes `ZooKeeperCheckWatchRequest::makeResponse` and
`ZooKeeperRemoveWatchRequest::makeResponse` which incorrectly returned
`ZooKeeperAddWatchResponse` instead of their own response types.
Adds a new integration test (`test_keeper_java_client`) that validates
all 5 watch-related request types using the actual Java ZooKeeper client
library (3.8.4).
Un-skips `test_persistent_watches_cleanup_on_close`.
Closes https://github.com/ClickHouse/ClickHouse/issues/98079
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>