Worker improvement

1.  Use a single web worker for all deflating/inflating tasks in a ZipReader/ZipWriter, instead of one worker for one entry. This significantly reduces the overhead of creating web workers when processing zip file with many entries. However, users now must call `close()` when they done with ZipReader/ZipWriter, or the worker is leaked.

2.  Separate codecs (Inflater/Deflater) and worker codes, and allow pluggable DEFLATE implementations. Now zip.js can work with zlib-asm and pako.

3. Avoid copy ArrayBuffer's between workers and main thread.

4. Move crc32 into worker, further reduce main thread's load.

I just noticed that issue #44 exists in `inflate.js`, but not in pako and zlib-asm. However it is hard to say pako and zlib-asm are 100% conformant. It is also hard to tell which is better; even we can now, we don't know whether they will be properly maintained in future.

But if we don't have enough knowlege/resource to maintain the existing deflate/inflate implementation, I think we'd better deprecate/discard it.