Some stability fixes for amd64 / windows

It looks like VirtualAlloc on windows isn't safe for MONO_MMAP_32BIT.

I grabbed a couple of changes from upstream to allow call by register for trampolines when 32-bit immediate won't work.

TODO: make sure this hardcoded instruction size is still ok:

		/* 5 = length of amd64_call_membase () */
		amd64_alu_reg_imm (code, X86_SUB, AMD64_R11, 5);