[Flang][OpenMP] Refactor to properly fix privatisation of loop bounds
The OpenMP loop Operations have the bounds attached to them. If the
loop bounds are privatised then the privatisation has to happen
before the loop operation is created. To do this the privatisation
is split into two steps. The first step performs cloning and
firstprivate handling, the second step performs lastprivate handling.
This also reverts the changes in the temporary fix (D127137).
Fixes https://github.com/flang-compiler/f18-llvm-project/issues/1171#issuecomment-
1143880545
Fixes https://github.com/flang-compiler/f18-llvm-project/issues/1171#issuecomment-
1119997442
Fixes #60872
Reviewed By: NimishMishra
Differential Revision: https://reviews.llvm.org/D151504