This revision adds a helper function to hoist alloc/dealloc pairs and
alloca op out of immediately enclosing scf::ForOp if both conditions are true:
- all operands are defined outside the loop.
- all uses are ViewLikeOp or DeallocOp.
This is now considered Linalg-specific and will be generalized on a per-need basis.
Is this loop necessary? It doesn't look like hoisiting only the alloc can put operands of allocs out of the loop.