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).
Merge remote-tracking branch 'upstream/master' into passive_receive_adrian
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.
Merge remote-tracking branch 'upstream/master' into passive_receive_adrian