This commit enables userland to load and start executing, as it
did before recent vm/ shakeups. fork(2) is still wip.

Changes:
pmap.c:
i) Initial split out of pmap_enter() variants:
 - pmap_enter_locked()
 - pmap_enter_quick()
 - pmap_enter_object()
ii) Improve locking behaviour - make it more consistent with native pmap
iii) Fix two api change related bugs. (kva_alloc() and friends)
iv) Miscellaneous further pmap functions to make boot progress.

pmap_pv.[hc]:
i) Modify the api to export locking behaviour control.
ii) Fine tune pv chunk garbage collecting.
iii) Remove stray debug/instrumentation code.
     "-	if (pmap == kernel_pmap) return true;"

Approved by:	gibbs(implicit)
- Zero out the MSW of %rsi "just in case".
- Cleanup ABI translation for syscall -> cpu_fetch_syscall_args()

Approved by: gibbs (implicit)
- We don't support Process Context Identifiers (PCID) (the x86 version of ASIDs) yet.
- You've got to flush that TLB when you've got to flush that TLB (as
  soon as the new user pmap has been loaded).
- Do not destroy the pmap lock when a pmap is destroyed. The zone
  .init()/.fini() lock handling is leaky.
- Remove stray #include

These changes now enable fork(2) to succeed, and both parent and child
to make progress.

Next stop, exec(2)

Approved by: gibbs(implicit)