Implement progress to NanAsyncWorker.

This builds on NanAsyncWorker by providing a NanAsyncProgressWorker which can dispatch progress information back to the originator.
On that note, I think there might be a race-condition between the progress event and the completion event.