Async methods

This pull request adds a lot of things. I planned to create it with streaming methods (to close properly #121) but I'm taking too long (and rebasing these commits become painful).

The highlights are :
- rework ZipObject and CompressedObject
- use pako's utf8 implementation (better and faster)
- add asynchronous methods

The async methods **won't fix** #121 : they remove the time limit but not the memory limit. The whole data is still loaded in memory.

There are 6 new async methods : `asTextAsync`, `asBinaryAsync`, `asArrayBufferAsync`, `asUint8ArrayAsync`, `asNodeBufferAsync` and `JSZip#generateAsync`.
```js
zip.file("long_text.txt").asTextAsync(function (err, content) {
  if (err) {
    // handle error
  }
  // content contains the text
});

zip.generateAsync(function (err, content) {
  if (err) {
    // handle error
  }
  // content contains the zip file
});
```

I will update this pull request after #140 since its outcome will change my implementation.