Replace per-scan byte slice allocations with a sized buffer pool,
significantly reducing memory pressure during log file scanning.
- Add Release() method to return buffers to pool (callers must invoke)
- Remove Reset() method - create new scanner instead for simpler lifecycle
- Refactor chunk prepending to reuse pooled buffers instead of append
Benchmark results show allocations dropped from ~26k to 1 per scan
for small chunk sizes, with better throughput.
BREAKING CHANGE: Reset() removed; callers must call Release() and
create a new BackScanner instance instead.