cloning: user_mem_abort: we alter is_writable only when cloning is enabled
cloning: postpone RAM/IO address checking until stage2_set_pte

We postpone RAM/IO address checking until stage2_set_pte, because using
pgd index to distinguish is not enough, I/O address and RAM address
may belong to the same pgd entry.

In stage2_set_pte, we don't need to do coa_pte for such IO address, but
we still need to flush cache and remove the pfn from shared_list if the
pfn is existed.
cloning: fix vexpress-a15 source VM hangs after cloning

In vexpress-a15, some I/O address and ram address fall into the same
pgd entry, and accessing to that I/O address will generate a trap because
we have invalidated all pgd entry. But KVM does not know how to handle
this kind of trap, it will not call user_mem_abort because the fault address
belongs to I/O not RAM.

The solution is to unshare those I/O address right after cloning. The
solution works like the target VM do the ioremap in the first vcpu run.
cloning: fix -M virt VM failed to remap VGIC

This is because -M virt VM's IO addr has different pgd entry
from RAM addr's pgd entry, there kvm won't do unshare for that
path of IO addr. We need to ignore such cases occured in both
SRC VM or DST (cloned) VM.