hammer2 - pfsmount -> clustermount separation part 1

* Start working on turning the hammer2_pfsmount structure into an
  abstracted PFS 'cluster' structure.

* Move hammer2_inode's allocation infrastructure to the pmp (except
  for the super-root inode which has no pmp).  It was previously
  hmp-centric.
kernel - Increase KVM default for 32-bit systems from 1GB to 1.5GB

* Increases KVA_PAGES default from 256 to 384, giving the kernel 1.5GB
  of KVM and userland 2.5GB (instead of 1/3).

Numerous people running 32-bit systems are hitting resource limits and
actually running out of KVM.  There are many reasons for why this is
happening.  It isn't simply a resource-tuning issue because most of the
resource limits we have today are already quite reasonable.  It's when
the system combines to fully utilize multiple resources where the problems
begin.  Tuning-down the resources impacts performance too much and makes
the systems less usable.  PCI resources tend to reserve larger areas,
system structures are fatter, and many other issues crop up.

In addition, 32-bit systems today can be greatly extended by adding swapcache
and swapcache requires significantly KVM resources.  For example, adding
64GB of swapcache eats ~64MB of ram and heavy tmpfs use often requires an
even higher ratio (64GB swap w/ kern.maxswzone=128m in /boot/loader.conf).
With the price point for SSDs coming down, 256GB and larger SSDs are far
more common these days and we want even 32-bit systems to be able to make
use of them.

On a fresh system boot well over 512MB of KVM out of the (previous) 1GB
space is already accounted for.  This leaves precious little for dynamic
expansion of system structures.

This leaves us with one real option... increase KVM and decrease UVM.
By increasing KVM from 1GB to 1.5GB we nearly double the KVM available to
the kernel for dynamic expansion of system structures.  User virtual memory
is reduced from 3GB down to 2.5GB.  While this may impact some applications
such as Perl, those applications are already tending to run on the edge
anyway and, in fact, modern application development is starting to assume
64-bit address spaces for optimal operation anyway.

I've come to the conclusion that it is better to move the line on UVM down
in order to completely solve the KVM issue for system resources on 32-bit
systems.
libarchive: Add symbol versions (not active)
systat/ip: Unbreak UDP stats
kernel - Document bugs in sendfile that we currently punt on

* sendfile tries to soft-busy the VM pages it backs the mbuf with.  This
  is meant to prevent the VM page's data from being modified while TCP
  is playing with it.  However, it doesn't work.  There are two issues.

* (1) The page still may be mmap()'d writable.  A simple vm_page_protect()
      would fix this.

* (2) The page may be associated with a buffer cache buffer and can be
      modified via a VOP_WRITE through that buffer regardless of whether
      soft-busy or busy is set.  This is a real problem.

      Even if we find and discard the buffer it can just be reinstantiated
      and wind up with the same problem.

From-discussion-with: jeffr, rookie on IRC
Merge branch 'master' into gsocdrm_alter
libbz2: Add symbol versions (not active)
liblzma: Add symbol versions (not active)
libz: Use vendor version numbers instead of DF306

This allows for a cleaner set of private symbols.
libarchive: Use vendor version numbers instead of DF306
libmd: Add symbol versions (not active)
kernel - Add cluster_readcb()

* This function is similar to breadcb() in that it issues the requested
  buffer I/O asynchronously with a callback, but then also clusters
  additional asynchronous I/Os (without a callback) to improve performance.

* Used by HAMMER2 to improve performance.
hammer2 - pfsmount -> clustermount separation part 2

* Further separate the high-level VNOPS/inode (hammer2_pfsmount) layer
  from the lower level device (hammer2_mount, hammer2_chain) layer.

* Remove hmp fields from hammer2_trans and hammer2_inode.

* Add hammer2_cluster to the pfsmount as degenerate case for now.  This
  will be used to list all devices backing the PFS mount, pertaining to
  the copies mechanism.

* Run all logical (file) buffer cache operations through the device buffer
  cache.  Remove previous direct-mapped shortcuts and disable BMAP for now.

  Basically the issue here is that with multiple devices backing a HAMMER2
  mount, the normal file buffer cache 'cached disk offset' operations used
  to shortcut I/O just won't work.  We can add the shortcut back in later
  for single-backing-device mounts but for now separate them out entirely
  and bcopy() between them.

* This will also make it easier for the GSOC H2 file compression project.

* Restore some of the lost performance by using the newly implemented
  cluster_readcb() buffer cache function.
Merge branch 'master' into gsocdrm_merger