JIT64: optimize multiplication by immediate constants

Factor out common code and handle a few more common cases.
JIT64: optimize rlwinmx/rlwinix and friends

Take advantage of movzx as a replacement for anding with 0xff or 0xffff, and
abuse loads from the register cache to save ops.
JIT64: Optimize cmpXX

Use TEST instead of CMP if we're comparing against 0 (rather common), and
optimize the case of immediate compares further.
JIT64: optimize sign/zero-extend

Also remove some comments that no longer apply since x86_32 was dropped.
JIT64: avoid using LEA for adds when not necessary
JIT64: use LEA for the "a = b + imm" case of addi
JIT64: use xor to zero immediate regcache loads
JIT64: tweak srwx/slwx

Register B gets immediately moved into te shift register, so even if a == b
it doesn't need to be loaded.
JIT64: Optimize carry handling

Carries are rather common and unpredictable, so do them branchlessly wherever
we can. Optimize some special cases of carries where possible.
JIT64: support merged branching for rlwinmx, too

Not quite as common a branch instruction as cmpwi, but close.