Add ZipReader::ExtractCurrentEntry with a delegate interface.

This change gives consumers of ZipReader a way to have the current entry
streamed to them via a Delegate interface. It also:

- Reduces duplication in the ExtractCurrentEntry* functions.
- Uses the heap rather than the stack for intermediate buffers.
- Changes ExtractCurrentEntryToFd to ExtractCurrentEntryToFile, making
  it cross-platform in the process.

BUG=462584

Committed: https://crrev.com/2919be01ff758875fc7161f6b41f4461518c1213
Cr-Commit-Position: refs/heads/master@{#320948}

Review URL: https://codereview.chromium.org/1014653002

Cr-Original-Commit-Position: refs/heads/master@{#321205}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: 98e6db00a6cc9cf6df682240d61f1b535b564cb8
3 files changed