Add a "Compare and set" style support function.

Approved by:	gibbs (implicit)
Excise the pv related sources from the tree.
This is cruft leftover from an earlier effort to separate the pv code
from pmap.c

Approved by:	gibbs (implicit)
Missed out removing pmap_pv.h from the tree, and references to it and
mmu_map.h in r270140

Approved by:	gibbs (implicit)
This commit consists of a number of changes that enable the pv kernel
to boot to multiuser mode.

i) 	pmap has been completely purged of pmap_pv and mmu_map cruft.
ii)	machdep.c has been modified unmap excess boottime kernel va
    	mappings, which had overlaps with vm_pages on the free
	list. This caused page aliasing with conflicting permissions
	further on in boot.
iii)	To enable ii), the "special" page wirings for the xen console,
	xenstore, and shared info pages were mapped into
	non-conflicting va space at the expense of virtual_start,
	which is from an abundant resource (kernel va range).
iv)	Maxmem has been limited to about 50M for now, due to bootstrap
	limitations of Memory direct mapping. This is trivially fixable,
	and will be addressed in the next set of commits.
v)	User thread VA mappings into kernel space has been bugfixed
	and streamlined. (Further optimisations are possible).
vi)	The exception return path has been clipped of gs restore for
	now. We know that the hypervisor restores this on exit (via
	swapgs), but this needs further review. It seems to "just work
	for now", but I have left a note in the comments.

This commit also removes mmu_map.[hc] which have mysteriously survived
previous purges!

Approved by:	gibbs (implicit)