It is not uncommon for an InstallShield cab to have file
entries with a size of 0; this commit makes sure that trying to
extract such a file won't result in a warning, and won't
cause a crash when calling dumpArchive() on the containing
cabinet file.
zlib is used when available and falls back on gzio.
This allows performance improvements as our CRC32 and gzio
implementations are slower than base zlib.
As zlib is available when libpng is present, this is sensible to
benefit from it.