Swap: ((zcf: ZCF, leftSeat: ZCFSeat, rightSeat: ZCFSeat) => string)

If two seats can satisfy each other's wants, trade enough to satisfy the wants of both seats and exit both seats.

The surplus remains with the original seat. For example if seat A gives 5 moola and seat B only wants 3 moola, seat A retains 2 moola.

If the swap fails, no assets are transferred, both seats will fail, and the function throws.

The keywords for both seats must match.