It turns out that prior to running pthread tls destructors, the
current value stored under the given key is set to NULL, so any
attempt to retrieve the key value in the destructor (yes, it is passed
in as an argument, but...subroutines) yields a NULL.  This is now
worked around by setting the key value anew in the destructor, then
setting it back to NULL prior to exit.

Also fixed a bug where the uma tls destructor would have tried to
drain the local caches with a NULL zone pointer due to being called
before the first allocation by that thread in the given zone.
Packet interface output bytes were being double-counted in the
statistics.
Now that uma zones are properly fast, allocate MTAG_PROMISCINET m_tags
from a zone instead of using the default m_tag malloc allocation.
Zone allocations are several times faster than malloc(), and one of
these tags is allocated and freed for every inbound and outbound
packet on promiscuous-inet mode interfaces, so this adds up to
noticeable savings.
Rework uinet_if_netmap transmit path, avoiding the inherent hazards in
using IFF_DRV_OACTIVE and IFQ_DRV_IS_EMPTY() and replacing
mutex_sleep()/wakeup() with a more efficient condition variable.
This fixes an LOR in the synfilter implementation.  When a synfilter
is run from _syncache_add(), an INP_RLOCK is obtained while SCH_LOCK
is held from a preceeding syncache lookup.  If another thread calls
syncache_expand() from tcp_input(), syncache_expand() will attempt to
acquire SCH_LOCK while an INP_WLOCK is already held.

To avoid the LOR, when a synfilter is installed, _syncache_add() now
downgrades the INP_WLOCK it acquires on entry to an INP_RLOCK and
holds it until SCH_LOCK is released, which includes across a synfilter
invocation, if any is made.  This also resolves another issue related
to dropping the INP lock, then later reacquiring it and passing the
inp to the synfilter.
Fix munged #ifdef
The libuinet pcpu subsystem can usefully be initialized with any
number of cpus less than or equal to the number of host cpus, and when
initialized with less than the number of host cpus, it is possible for
threads to be pinned to cpus beyond the set that the libuinet pcpu
subsystem is aware of.  This patch ensures that threads pinned to host
cpus beyond the set of cpus the libuinet pcpu susbsystem is aware of
are mapped into the available pcpu state set.
Only build sysctl, vmstat, and related libraries on FreeBSD.
Change -Winline to -Wno-inline
Fixed a typo-induced bug in uhi_lock_log_disable().  Added
UHI_CLOCK_MONOTONIC_FAST to uhi_clock_gettime().
Add useless initializations to quiet spurious gcc unintialized
variable warnings.
Fix some build issues in libuinet_memstat and libuinetnv under Linux.
Some header issues remain.
Added sensible const qualifiers to parameters in the sysctl interfaces
in order to greatly reduce the number of const-defeating casts needed
in code using those interfaces.

Removed unnecessary sockaddr len initialization to improve
portability.
Increase Makefile consistency.
Updated README.
Remove unneeded include that causes portability issues.
Fix typo.
Add missing promiscuous mtag l2info flags init in input path.