Decomposes a 2-qubit unitary to a diagonal and the remaining operations.

For a 2-qubit unitary V, return ops, a list of operations and D diagonal unitary, so that: V = cirq.Circuit(ops) @ D

q0 The first qubit being operated on.
q1 The other qubit being operated on.
mat the input unitary
allow_partial_czs Enables the use of Partial-CZ gates.
atol A limit on the amount of absolute error introduced by the construction.
clean_operations Enables optimizing resulting operation list by merging operations and ejecting phased Paulis and Z operations.

tuple(ops,D): operations ops, and the diagonal D