[XLA:GPU] Extend the current while loop double buffering strategy to unroll the entire loop.
[XLA:GPU] Extend the current while loop double buffering strategy to unroll the entire loop.

Apply the current double buffering strategy to fully unroll the loop.
This opens up opportunities for:
1. Better compilation time in comparison to unrolling at the framework level.
2. We can get rid of the loop structure if trip count is 1.
3. As a consequence of 2. latency hiding scheduler does not have to worry about iteration optimization barrier.
4. As a consequence of 2. we open up opportunities for strength reduction, and additional algebraic simplifcations.
5. We do not OOM with current buffer assignment scheme due to strict control of predecessors/successors.
