Correctly implement gzip/gunzip. Test it with strings and files.

Addresses #62. Since that issue was opened however, there are two new
zlib functions in the node.js API: inflateRaw and deflateRaw, so I'm
keeping the issue open for now.