x86 optimization of the immediate values which uses a movl with code patchingto set/unset the value used to populate the register used as variable source.It uses a breakpoint to bypass the instruction being changed, which lessens theinterrupt latency of the operation and protects against NMIs and MCE.

- More reentrant immediate value : uses a breakpoint. Needs to know the instruction's first byte. This is why we keep the "instruction size" variable, so we can support the REX prefixed instructions too.

Changelog:- Use text_poke_early with cr0 WP save/restore to patch the bypass. We are doing non atomic writes to a code region only touched by us (nobody can execute it since we are protected by the imv_mutex).- Add x86_64 support, ready for i386+x86_64 -> x86 merge.- Use asm-x86/asm.h.- Change the immediate.c update code to support variable length opcodes.- Use imv_* instead of immediate_*.- Use kernel_wp_disable/enable instead of save/restore.