[xla] Modify the p2p-schedule-preparation pass to support a new scheme to
[xla] Modify the p2p-schedule-preparation pass to support a new scheme to
pipeline Send-Recv chains.

The old pipeline scheme only peels off a Recv and rotates the remaining
Recv-done, Send, Send-done inside a while loop.

The new pipeline scheme peels off both the Recv and the Send and rotates
the remaining Recv-done and Send-done inside a while loop.

The new pipeline scheme can also pipeline two Send-Recv groups that form a
cycle. In this case, we peel off all four Recv and Send instructions, and
rotate the remaining four Recv-done and Send-done instructions.

Modify existing tests to use the new pipeline scheme. Add a test for pipelining
two Send-Recv groups that form a cycle.
