Changed API to async, added ArrayBuffer / Blob compatibility.

needs more test...