Optimized `scripts/ci_validate_repo.py` for performance and memory efficiency:
- Refactored `check_no_nul_bytes` and `check_reasonable_size` into a single-pass `validate_files` function.
- Implemented early size check using `p.stat().st_size` to avoid reading files larger than 5MB.
- Replaced `p.read_bytes()` with chunked binary reading (64KB chunks) to detect NUL bytes, significantly reducing memory overhead.
- Added performance comments and maintained the efficient `rglob('*')` traversal pattern.
Measurements:
- Reduced I/O passes from 2 to 1.
- Reduced peak memory usage for large files from O(N) to O(1) buffer size.
- Faster rejection for oversized files (rejection before reading).