Label callback uses and instruction cloning inconsistent.
For label instructions with allow the raw bytes field to be re-used for a label callback pointer. If the pointer is valid, it is called when the label instruction is destroyed. This was causing problems when the instruction is cloned, xref https://github.com/DynamoRIO/dynamorio/pull/3960.
We are fixing the hot immediate issue by explicitly not copying the label callback pointer. However, the deeper issue remains about the higher level semantics. Is the cloned instruction passed to the client and the pointer is now invalid? Do we need to make a deep copy? Or should it be transferred? Whatever the solution is, it needs to avoid having two instructions with the same valid pointer since the callback should be unique to an instruction and should only be called once when this instruction is destroyed.