[OpenMP] Record the 'target data' block construct into a taskgraph
This patch implements 'target data' blocks nested within a taskgraph,
or carrying an explicit 'replayable' clause. These are recorded as two
nodes: an enter-data and an exit-data action bracketing the block's body.
Adding this feature reveals a further missing feature in the taskgraph
implementation, which is that we need to support 'use_device_ptr' and
'use_device_addr' clauses. Doing so fully and transparently raises a
number of issues throughout the taskgraph offload-execution pipeline.
Those issues will be addressed in future patches.
Assisted-By: Claude Opus 5
Pull Request: https://github.com/llvm/llvm-project/pull/225722