now callback parameter of continueWith() returns a tuple.

In previous, the returning error value in then() needs another rejected HNTask object.
If HNTask object is returned, another executing is needed to resolve original task.
So in error state, to skip one then-block needs one execution (by executor).

In future, then() can directly returns error to avoid unnecessary execution.
added finally() method in HNTask.