Open only one IO for the zip IO streams

Upon GC, the temporary IOs would actually close the zip streams, which
caused all kinds of problems.
Consistent snake_casing
Explicitly close zip entries

This is done automatically on put_next_entry and close, but doing it
explicitly certainly does not hurt.
Merge branch 'safer-io'