Adds the passes nvvm-attach-target & rocdl-attach-target for attaching nvvm.target` & rocdl.target attributes to GPU Modules.
These passes search GPU Modules in the immediate region of the Op being acted on, attaching the target attribute to the module.
Modules can be selected using a regex string, allowing fine grain attachment of targets, see the test attach-target.mlir for an example.
Depends on D154153
It seems a bit surprising to me that LLVM transforms would depend on the GPU stuff.
Seems like this new pass should move elsewhere instead?