make.1: We use bmake.1, not make.1.
kernel - Rewrite vnode ref-counting code to improve performance

* Rewrite the vnode ref-counting code and modify operation to not
  immediately VOP_INACTIVE a vnode when its refs drops to 0.  By
  doing so we avoid cycling vnodes through exclusive locks when
  temporarily accessing them (such as in a path lookup).  Shared
  locks can be used throughout.

* Track active/inactive vnodes a bit differently, keep track of
  the number of vnodes that are still active but have zero refs,
  and rewrite the vnode freeing code to use the new statistics
  to deactivate cached vnodes.
kernel - Fix a SMP race between pageout and exec_new_vmspace()

* Panics on token mismatch due to p->p_vmspace being replaced out
  from under a process utilizing p->p_vmspace->vm_map.map_token.

* Fix a SMP race between pageout and exec_new_vmspace().  The pageout
  code properly PHOLD()s the process and related process token but
  fails to hold p->p_vmspace during a potentially blocking call.

  Thus it is still possible to race termination of the vmspace and/or
  for the process to replace its vmspace while the pageout activity is
  in progress.

* Use vmspace_hold()/vmspace_drop() and reference the vmspace directly
  after load it from p->p_vmspace.  The race is allowed, but the vmspace
  will no longer be destroyed out from under the pageout and the code
  will no longer attempt to release the wrong token.
kernel - Rewrite lockmgr / struct lock

* Rewrite lockmgr() to remove the exclusive spinlock used internally
  to guard operations.

* Retain existing API and operational semantics.  This is primarily:

  - Acquiring a LK_SHARED lock on a lock the caller already owns
    exclusively simply bumps the count and retains the exclusive
    nature of the lock.

  - Exclusive requests and upgrade requests have priority over shared
    locks even if the lock is currently held shared, unless the thread
    is flagged for deadlock treatment.

  - Upgrade requests are capable of guaranteeing the upgrade (as before).
    This could be further enhanced because we now have the last release
    transfer the exclusive lock to the upgrade requestor, but the original
    API didn't have a function for this so neither do we.  The more
    primitive detection method is used (aka LK_SLEEPFAIL and/or
    LK_EXCLUPGRADE).

* Reduce multiple tracking fields into one field so we can use
  atomic_cmpset_int().

* Hot-path common operations.  A single atomic_cmpset_int() gets us
  through.