rmlock fixes for witness and trylock.

    * Correct witness checks in rmlock rlock
    * Correctly return the return value from the uhi call for rmlock rlock.
Merge pull request #25 from erikarn/adrian_rmlock_fix

rmlock fixes for witness and trylock.
- Exposed general thread local storage functionality in UHI.

- Added thread start and finish hooks to UHI thread API.

- First pass at per-thread caching in uma, replacing the per-cpu
  caching that relied on the atrociously costly per-cpu emulation.
pool api speed testing tool
Remove libev from poolspeed link
Add mulithreaded testing to poolspeed.
Fixed typo.
Build all currently working programs in bin
- Auto-size pool to avoid allocation failures

- Pool allocations no longer block so pool exhaustion will result in
  failure instead of infinite wait

- Reduced thread ready wait

- Added help option
Merge remote-tracking branch 'origin/uma_speed'

Conflicts:
	lib/libuinet/uinet_host_interface.c
Invoke CACHE_LIST_ENTER() before acquiring the zone lock to avoid LOR
between uma_mtx and the zone lock.  The CACHE_LIST_ENTER() and
CACHE_LIST_EXIT() interface is now global instead of per-zone as that
simplifies its use without affecting its current implementations.
Created new sysctl vm.cache_count and modified libmemstat to use that
instead of kern.smp.maxid to estimate the size of vm.zone_stats so it
will function properly whether uma is using per-cpu or per-thread
caching.
Handle negative return value from sbspace().
Remove tid parameter from uhi lock routines as it is not needed.

This also resolves an issue with using locks in tls key destructors,
as curthread was being used to supply the tid parameter value in the
locking calls, and curthread is implemented using a tls key (so before
this change, using locks in tls destructors introduced a
destructor-ordering hazard).
Fix regression in passive-socket-pair establishment that was
introduced with the convert-to-active-on-timeout functionality.

In short, the passive client socket still wants to inherit SO_PASSIVE
from the parent listen, as it will only ever be created from an
SO_PASSIVE listen socket, and it needs to be marked
SO_PASSIVE/INP_PASSIVE before tcp_do_segment() is called to avoid
unwanted transmissions.
UMA per-thread caching documentation.
When using per-thread caching, limit the number of simultaneous bucket
fills per zone by uma_cache_count, not mp_ncpus.
Don't pass ifioctls() through netmap - this has apparently been broken
since NETMAP_API 11 was introduced in February.  Since then, passing
ifioctls() through netmap results in netmap treating a struct ifreq
(or other ifioctl-related struct from net/if.h) as a struct nmreq,
looking deeply into it, and taking action based on the garbage it
finds there.

This is the root cause of sporadic failures of libuinet to
successfully bring up netmap interfaces and also appears to be the
root cause of some observed system crashes.