Implement sh.zip() and sh.unzip()

This adds `sh.zip()` and `sh.unzip()`, and relies on the `sh.wget()` (i.e., for downloading test zip files)--I'll rebase once that lands.

I tried using a few different JS zip/unzip implementations, and ended-up using the same one we have already for the zlib adapter.  There is one issue with a bug in PhantomJS and the way the unzip code works--I've filed a bug, see https://github.com/imaya/zlib.js/issues/33.  We might have to patch it ourselves, but it's not a real bug in browsers.  I'll sort it out before we land this (i.e., don't land this yet, but you can review).