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 build tests "Array vs typed array in CRC32" here:

http://jsperf.com/array-vs-typed-array-in-crc32
http://jsbin.com/roxidofoju/

In firefox 33, typed array version is always slower than normal array; in chrome 38 however the typed array version's performance is hard to explain: it seems depending on whether the normal array version was executed first - if so it is slower, if not it is faster. You can use the jsbin test to verify this.