[flang][acc] Add recipe populate testing through type interfaces (#163990)
This PR does the following:
- Updates createAndPopulate implementation so instead of first building
detached blocks it directly builds them in appropriate place - because
the MappableType implementation in FIR is relying on properly connected
regions in order to look up module
- Updates createAndPopulate to properly create destroy region with newly
introduced generatePrivateDestroy API for MappableType
- Adds recipe-populate-private.mlir test with comprehensive type
coverage including scalars, arrays (1D/3D), derived types, and extensive
box type tests (heap/ptr scalars, dynamic arrays in 1D/2D, ptr arrays,
and boxed derived types)
- Adds recipe-populate-firstprivate.mlir test with coverage for types
with well-supported copy operations (scalars, static arrays, derived
types); intentionally limits box type testing as copy implementation for
complex box types is not yet complete