Type to represent all needed info to emit an insn.
This is a virtual equivalent of the insn.
Every insn in the stream has an associated vinsn. This is used
to reduce memory consumption basing on the fact that many insns
don't change through the scheduler.
vinsn can be either normal or unique.
* Normal vinsn is the one, that can be cloned multiple times and typically
corresponds to normal instruction.
* Unique vinsn derivates from CALL, ASM, JUMP (for a while) and other
unusual stuff. Such a vinsn is described by its INSN field, which is a
reference to the original instruction.