Preemptively allocating structures with the number of reported files can
lead to trouble as an invalid zip can still have a valid central
directory end that is fed into a `with_capacity` causing it to overflow.
This commit introduces a heuristic that will use the reported number of
files as long as the number is less than the cde offset.
Benchmarks were unaffected by this change.