when generating IR for a device, emit IP compare for that device against ::1
rid the SM interpreter of IPs as values

remove ld src.ip, cmp.block and cmp.localhost for a new instruction,
cmp.srcip. the new instruction is equivalent to ld src.ip; cmp.block in
the old set.
correctly handle IR argument types for binary operations
don't emit phis for values that haven't changed in any branch of a fork
for IR writes, ensure that expressions with block changes properly codegen
remove the EXCHANGE opcode, instead add POP <i>