Add TargetRegisterInfo hook canSpillPhysReg() and use it in
TargetTransformInfo::canFoldCopy to catch more cases where the COPY
being spilled is copying from a spill-able physical register, but the
register is not in the COPY destination register's regclass.
For example, when spilling:
%vreg0 = COPY %XZR ; %vreg0:GPR64common
without this change, canFoldCopy would return false since %XZR is not in
GPR64common. So the spill code generated would be:
%vreg0 = COPY %XZR STR %vreg
instead of
STR %ZXR
Implement canSpillPhysReg() for AArch64, where all phys regs are
spillable other than SP/WSP.