Asyncprogress

Rebased and fixed. Replaces #175 and #181. Closes #169.
A more straightforward solution would be to pass an argument to `Execute()`, e.g.:

```c++
virtual void Execute(ExecutionState& exec_state) {
  exec_state.Send("begin");
  // ...
  exec_state.Send("working");
  // ...
  exec_state.Send("done");
}
```

Where `ExecutionState` is a simple friend class, e.g.:

```c++
class ExecutionState {
 public:
  // You could do fancy generics with templates here.
  void Send(const char* data) { that_->Send(data); }
 private:
  friend class NanAsyncWorker;
  ExecutionState(NanAsyncWorker* that) : that_(that) {}
  // Prohibit copying and assignment.
  ExecutionState(const ExecutionState&);
  void operator=(const ExecutionState&);
#if __cplusplus >= 201103L
  // Prohibit C++11 move semantics.
  ExecutionState(ExecutionState&&) = delete;
  void operator=(ExecutionState&&) = delete;
#endif
  NanAsyncWorker* const that_;
};
```