Update API docs and demos for recent worker improvements.

I have proposed a workable solution for worker pooling above, now I write some code to make it clear:

```
obj.zip = {
// pooled web worker for multiple zipReaders
_sharedReaderWorker: null,
// release pooled web worker. If all existing ZipReaders using it are GC'd the worker will 
// also be GC'd
releaseSharedReaderWorker: function() { obj.zip._sharedReaderWorker = null; }
//...other properties
}

function createZipReader() {
//...
	if (!obj.zip.useWebWorkers)
		callback(zipReader);
	else if (obj.zip._sharedReaderWorker) {
		zipReader._worker = obj.zip._sharedReaderWorker;
		callback(zipReader);
	} else {
		createWorker('inflater',
			function(worker) {
				zipReader._worker = obj.zip._sharedReaderWorker = worker;
				callback(zipReader);
			},
			function(err) {
				onerror(err);
			}
		);
	}
}
```

In client codes:

```
// release the worker if no ZipReaders have been created for 5 minutes. 
setInterval(zip.releaseSharedReaderWorker, 300 * 1000);
```

You see, we don't have to use refcounting.