[RFC][OpenMP] supporting delayed task execution with firstprivate variables

Thanks for taking a look. Flang already does what clang does (so far as I understand). Roughly what happens is that all live in values for the task region are copied verbatim into the structure wrapping the arguments to the outlined task body. This works great for the simple types allowed in C (e.g. a scalar integer).

The problem comes for the more complex data types which may be privatized in Fortran such as arrays. In this case, the existing infrastructure will just make a copy of a pointer to a stack allocated type descriptor (which will contain a pointer to either stack or heap memory). If the task is not executed until after that stack frame is gone, the copied pointer will point to deallocated memory.