vm: Record exception ip only for instructions where exceptions may happen.

Mirroring ip to a volatile memory variable for each opcode is an expensive
operation. For quite a lot of often executed opcodes like stack manipulation
or jumps, exceptions cannot actually happen. So, record ip only for opcode
where that's possible.
This will change behaviour of pending exceptions raised during a jump: now it'll report the destination address as the place the exception was raised.  This is not a problem.