unzip: Handle non-seekable input ports.

Before:
  - unzip would attempt to seek the input port via file-position in some cases
  - unzip did not handle data descriptors with signatures

After:
  - unzip attempts to seek the input port via file-position. If
    exn:fail:filesystem or exn:fail:contract is thrown, unzip skips over bytes
    from the input stream to achieve the desired seek.
  - unzip properly handles reading and discarding data descriptors with and without signatures.