zip: store the required data from the zip header in a custom structure

This is a refactoring that does all the file calculations in the
zip_archive constructor and associates those calculations with the
filename instead of storing the zip_header pointer.

This is necessary to support data descriptors.