kernel - Add negative caching to cache_findmount()

* Add negative caching to cache_findmount().  It turns out that there
  are quite a few cases, particularly during poudriere, so this is
  needed to avoid dropping down into the slow mountlist scan code.

* Removes remaining bottlenecks in mount-point crossings during path
  lookups.  The mountlist_token is no longer colliding in critical
  paths.
kernel - Remove getnewvnode() bottlenecks

* Move the global mntvnodescan_list into the mount structure and remove
  the global mntvnode_token.  Adjust the code to use the per-mount
  mp->mnt_token instead.

* This removes a major token bottleneck in getnewvnode(), particularly
  important when doing concurrent not-yet-cached directory scans or file
  creates under different mount points, and when the vnode cache reaches
  its nominal maximum.

* Also add a missing piece for the last cache_findmount() commit.
kernel - Fix deadlock in tmpfs

* If the pageout daemon is paging out a file on a tmpfs mount concurrent
  with an unmount of same, a deadlock can occur.

* Fix the node vs vnode lock order in the tmpfs umount code.
kernel - Fix cross-mount handling in tmpfs hardlink code

* Fix tmpfs to properly report EXDEV when a cross-mount hardlink is
  attempted instead of asserting and causing a panic.

Reported-by: ftigeot
iso639: Add Standard Moroccan Tamazight.

See http://www.loc.gov/standards/iso639-2/php/code_changes.php
hier.7: Document that /boot/kernel is a directory and has the modules too.

While here, also remove /usr/include/objc.
libdmsg: Fix pointer dereference.
Use NULL for pointers in a couple of places.
kernel - cpu_pause() needs to be memory-modifying

* __asm __volatile isn't enough, it also needs the "memory"
  attribute to prevent gcc from optimizing out memory loads around
  loops using cpu_pause().
kernel - Implement shared namecache locks

* Currently highly experimental, so I've added a sysctl and default it
  to disabled for now.

  sysctl debug.ncp_shared_lock_disable
	0	Shared namecache locks enabled
	1	Shared namecache locks disabled (default)

* Removes most conflicts when concurrent processes are doing long path
  lookups with substantially similar prefixes.

* Also removes directory conflicts when concurrent processes are accessing
  different file names under the same directory using short paths.

* Shared mode is only used when the ncp is resolved and in a normal
  working state (this includes entries which have resolved to ENOENT).
  Otherwise the code falls back to exclusive mode.

* Shared namecache locks have three major complexities:

  (1) First, some bits of the nlookup() routine had to be rearranged to
      avoid double locking.  This is because the last namecache component
      always has to be locked exclusively, but a path such as a/b/d/.
      references the same ncp entry for both of the last two components.

  (2) Second, any lock on a namecache structure vhold()'s the related vp
      (if not NULL).  Shared locks present a particular issue where a
      second cpu may obtain a second shared lock before the first cpu
      is able to complete vhold()ing the vnode.  The vnode cannot be
      vhold()'d prior to the lock.  To deal with this an interlock was
      implemented (see NC_SHLOCK_VHOLD).

  (3) Finally, because there might be many concurrent shared lock users
      to avoid starving out an exclusive lock user we must stall further
      shared locks while an exclusive request is pending.

* The implementation specifically does not attempt to implement lock
  upgrading.  That's another can of worms that I'd rather not open.
Merge branch 'master' into gsocdrm_merger
kernel/isa: Remove empty isa_init() (formerly used for COMPAT_OLDISA).
kernel/x86_64: Remove some bogus #ifndefs.
libkern: Stop compiling in (u)cmpdi2.c, because they are not used.

It's 32 bit code that assumes that two longs fit into 64 bits,
hence put it into i386 'files' (commented out).
<malloc.h>: Restrict support for <malloc.h> to !defined(__STDC__).

In essence this is what FreeBSD did: error if __STDC__ is defined, and
silently include <stdlib.h> if not.

Packages are expected to now fail their config checks for <malloc.h>
but to build nevertheless, which was confirmed with building ~500
packages as a test.

Adjust a few config.h files of contrib/ code as well, notably
libssp's, which gets rid of the malloc.h warnings from the buildworld
output.
kernel - Implementat much deeper use of shared VM object locks

* Use a shared VM object lock on terminal (and likely highly shared)
  OBJT_VNODE objects.  For example, binaries in the system such as
  /bin/sh or /usr/bin/make.

  This greatly improves fork/exec and related VM faults on concurrently
  executing binaries.  Most commonly, parallel builds often exec
  hundreds of thousands of sh's and make's.

  +50% to +100% nominal improved performance under these conditions.
  +200% to +300% improved poudriere performance during the depend
  stage.

* Formalize the shared VM object lock with a new API function,
  vm_object_lock_maybe_shared(), which determines whether a VM
  object meets the requirements for obtaining a shared lock.

* Adjust the vm_fault*() APIs to track whether the VM object is
  locked shared or exclusive on entry.

* Clarify that OBJ_ONEMAPPING is only applicable to OBJT_DEFAULT
  and OBJT_SWAP objects.

* Heavy work on the exec path.  Somewhat lighter work on the exit
  path.  Tons more work could be done.
kernel - Separate page activity heuristic for anonymous memory vs files

* Add sysctls vm.anonmem_decline and vm.filemem_decline with reasonable
  defaults.

* Should improve retention of anonymous memory over file cache.
kernel - Track slabs allocated and freed

* Add statistics counters kern.slabs_allocated and kern.slabs_freed,
  tracking kernel memory allocator slab statistics.
kernel - Clean up if_bridge bif_state tests

* bif_state is only valid when IFBIF_STP is set, adjust two bits of
  code that were using bif_state unconditionally.

* This is a semi-operational change because bif_state's default value
  when IFBIF_STP is not set resulted in correct operation anyway.

  However, setting STP and then clearing it on a sub-interface could
  cause problems with stale state.
debug - vmpageinfo changes

* Adjust vmpageinfo to print more information.