If a superpage mapping is being removed then we need to ignore the PG_PDE_PAT
bit when looking up the vm_page associated with the superpage's physical
address.

If the caching attribute for the mapping is write combining or write protected
then the PG_PDE_PAT bit will be set and thus cause an 'off-by-one' error
when looking up the vm_page.

Fix this by using the PG_PS_FRAME mask to compute the physical address for
a superpage mapping instead of PG_FRAME.
Don't fiddle with the PAT bits directly since they do not exist in nested
page table entries.

The 'pmap_swap_pat()' function swaps the PG_PTE_PAT and PG_PDE_PAT bits
for the regular x86 page tables and is a no-op for nested page tables.
There is no need to assign a VPID to a virtual machine since we are using
nested page tables. All mappings created in the VMX non-root mode are tagged
with the EP4TA which is guaranteed to be unique for each virtual machine.

This makes the use of VPIDs redundant so get rid of them.
Revert r252545.

Change r252545 was misguided because of my misinterpretation of the role
of VPIDs when nested page tables are in use. As it turns out they are
indeed useful to allow the TLB to cache guest mappings in a safe manner.

A side-effect of r252545 was turning off the "enable VPID" VM execution
control that in turn caused all guest mappings to be flushed on every
VM entry and exit. This is necessary for correctness but is probably a
drag on performance.

Pointed out by:	grehan
Since 'pm_pml4' is always a direct mapped address use DMAP_TO_PHYS() to get
the physical address instead of getting it from recursive page table index.

This allows 'pmap_release()' to work with pmaps that may not have the
recursive page table index populated (e.g. PT_EPT).
Allocate guest vmspace at VM creation time and free it when the VM is
destroyed.
Add a function pointer argument to 'vmspace_alloc()' that will be used to
initialize the embedded pmap. This will be used by callers that want to
create a pmap that is different than the one initialized by 'pmap_pinit()'.

For e.g. bhyve will use this function pointer to create a nested pmap of
type PT_EPT.

Discussed with:	kib
Allocate an object of type OBJT_DEFAULT for each memory segment created for the
guest (i.e. guest memory is no longer wired).

Use the 'd_mmap_single' entry point to return the object/offset underlying
the mmap'ed region.

Since we don't yet handle nested page faults in vmm.ko the guest will
exit immediately on entry with an unhandled memory fault.
The GPA to HPA mappings are now handled by the host's VM subsystem.

Get rid of the processor-specific hooks to get and set mappings into the
nested page tables.
The nested page tables are now maintained by the VM subsystem.

Remove the redundant 'pml4ept[]' and point the EPT to the physical address
of 'pm_pml4' instead.

Also get rid of the 'ept_vmcleanup()' function since this is now done by
'pmap_release()'.
Add mappings to guest's vm_map at the same time as creating the vm_object
that backs those mappings.