Implemented svm_cpu_reset()
Consume pending NMI on VM exit
x86: Change vm_root_cell_shrink() signature

Need to pass cpu_data, because it is where VMCB is stored in SVM mode
(VMX addresses VMCS implicitly).
x86: Implement svm_root_cell_shrink()

The function is almost identical to its vmx.c counterpart.
x86: Implemented svm_cell_exit()

The function is again the same as vmx_cell_exit(), which calls
for future refactoring.
x86: svm_handle_cr() works without decode assists

Implemented x86_parse_mov_to_cr() which returns GRP number used
to set crN register. It is called from svm_handle_cr() if decode
assists are not available.
x86: Pass cpu_data to vmx_cpu_park()

This is essentially a no-op, since the very same modification
was already done upstream.
x86: Do not pass guest_regs to vmx_reset_cpu()

This modification enables calling vmx_cpu_reset() from outside
the vmx_handle_exit(). It is also no-op as it is already
implemented upstream.
x86: Do not pass guest_regs to svm_cpu_reset()

For motivation and details, see previous commit.
x86: Fix svm_cpu_park()

svm_cpu_park() receives cpu_data as vmx_cpu_park() does. It also
executes HLT with interrupts off in guest mode, emulating the behaviour
vmx_cpu_park() relies on.
x86: Fix a type in svm_handle_exit()

An exit code the function handles was not the one that is
intercepted.
x86: Always use decode assists for CR0 writes

Temporarily disabled the branch responsible for emulating CR0 writes
completely in software. The reason is that x86_parse_mov_cr() doesn't work
for unpaged guests yet, and that nested SVM seems to fill exitinfos for CR0
intercepts.