GS Cache: Extract a file from TAR.

This change adds support to extract a file from a tar archive in google
storage. The change is based on "Range Request" which set a http "Range"
header in a normal http downloading. For example:

   Range: bytes 123-456

This requests download the bytes from 123 to 456 (included).

The basic workflow of `extract` is:
1. Call `list_member` to get all file list of the Tar file.
2. Search the target file in the file list, then get the start/end data.
3. Call `download` with "Range" header to download that part.

BUG=chromium:824580
TEST=Ran unit tests.

Change-Id: I2550945932ec67fb7e9a7ae7e75194b3f2377d22
Reviewed-on: https://chromium-review.googlesource.com/1068662
Commit-Ready: Congbin Guo <guocb@chromium.org>
Tested-by: Congbin Guo <guocb@chromium.org>
Reviewed-by: Congbin Guo <guocb@chromium.org>
2 files changed