Added stream-like read API and write API to node-zipfile

Hi!

As discussed previously, I have performed some changes in node-zipfile. They are the following:

*   Made it impossible to have multiple concurrent calls to `libzip` functions by referencing opened objects 
    (file, source) and throwing an exception when they are used.

*   Added a stream-like API for file read. I figured this out because
    * I prefer that an asynchronous read does not necessarily read all the file at once.
    * `libzip` actually has an API that, on purpose, imitates usual file system IO.
  
    Thus, the code for this API in zipfile.js is actually taken from node's code..

*   Added write API. For now, one can only add/replace local files and local directories. Adding buffers should 
    be fairly trivial to add.

    The trick here is that adding/replacing in `libzip` returns immediately, Actual write is done when closing 
    (saving in the current API). Thus, it is not possible to stream-line write operations in a stream-oriented
    fashion... 

I am aware that those changes represent a pretty huge modification of you codebase. I am submitting a pull-request in the hope that you could accept them. However, feel free to refuse them as well, I would have no problem maintaing it myself -- it is just that I believe that there are already way to many node-zipfile bindings floating around to add yet another one..

Cheers,
Romain