Task implementation that can be executed, as it stores task body. Generic version (for tasks that return non-void results). In most cases it should be allocated on the heap and used with TRefCountPtr, e.g.