Avoid copying of the orignal variable if it is going to be marked as firstprivate in task regions. For taskloops, still need to copy the non-trvially copyable variables to correctly construct them upon task creation.
Try to reduce the number of global vars captured in the OpenMP regions by capturing them only the regions, which mark them as not-shared.
Added full support for parallel master taskloop simd directive.