Flips a binary expression attempting to maintain the semantics where possible.