Include error message in TaskFinished message

This is to allow clients to easily display why the task
failed, even if they haven't installed a watch on the
task.

A logical question about this is "why not always put the
task result in TaskFinished and get rid of ListenToValue
and ValueChanged?"  ... that may turn out to be the thing
to do, though if any task values are quite large to serialize
it could also be too inefficient. In any case it would be
a much larger refactor than this commit is.