Using promises internally instead of the async module and callbacks

Don't have the feeling it's easier or cleaner yet though.
Use .apply to pass all ASTs to the output method in browser.js