* Fix read-side overflow and simplify append API for large snapshot manifests
Follow-up to #13349, which fixed the write-side overflow when a snapshot manifest exceeds ~2 GB but left the read side and the API untidy. This PR addresses both.
### Changes
**Simpler append API**
There were two `append()` methods — one taking `int`, one `size_t` — and which ran depended on the argument type, which is easy to get wrong. Replaced with a single
public `append()` that safely chunks any size, plus a clearly-named backend hook `appendImpl()` that each storage backend implements. No more overload ambiguity.
**Read side fix**
`readKeyspaceSnapshot` read the manifest into a buffer whose length is an `int`, so a manifest larger than 2 GB could truncate and crash on restore. It now reads into a
`std::string` (which can exceed 2 GB) in chunks, matching the write side, and drops a redundant full copy of the manifest.
**Knob rename**
`BACKUP_MANIFEST_WRITE_CHUNK_SIZE` → `BACKUP_MANIFEST_CHUNK_SIZE`, since it now controls chunk size for both reads and writes.
**Test**
Added a unit test that reads a manifest back in many small chunks and verifies all range files and key ranges round-trip correctly.
### Notes
- Range and log files are unaffected — they're already streamed in small blocks on both read and write.
* Addressed comments
* Fix clang tidy errors