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.

Could you amend these paragraphs? After merging your PR, the README as is looks a bit strange, since you refer to this upstream repository as "original".