A class representing a Task for the farm skeleton.
This class defines the task that can be given to Farm skeleton to be executed in parallel. This is an abstract class (run_async method is pure virtual) but defines certain helper functions to be used by the class that implement this class (e.g. all data parallel skeletons implement this class) or by the farm class. Any class that implements this class need to define run_async() method with semantic that it should return control immeditely back to the calling program (e.g. by submitting asynchronous tasks to StarPU).