Example with granularity adaptation

A built-in either chooses to execute a kernel (here we only print a message) or to be replaced in the task graph with a new expression involving split/unsplit.