Callback

Added a callback argument to the `document` function that will be called once _**all**_ asynchronous tasks have been completed.

Due to the current run-and-forget approach (which is understandable for optimizing run time), this wasn't as clean as I would have liked. This could easily be improved/simplified if all asynchronous jobs (or maybe just the directory copies) were made synchronous or the flow depended on their completed (i.e. nested callbacks - *yuck!*).

However, I hope it meets your standards. This should fix #166.