Callback (alternative)

This is an alternative approach to #167 that uses the [async](https://github.com/caolan/async) package to handle asynchronous callbacks.

It's important to note that all asynchronous tasks will still be done in parallel (even source file handling - i.e. `nextFile`). This basically provides a *cleaner* and perhaps more maintainable solution.