add IOmSwap protocol, like ISwap but takes additional cursor
parameter. Change transact* to take cursor as optional last
argument. All existing cursor implementations pass cursor as last
argument.