Added packet-interface level callback that can be used in conjunction
with upcalls to batch receive side actions.  The callback provides
batch start and finish events during receive processing on a given
interface.

Added support to libev to use this mechanism to reduce ev_async_send()
calls under load, which could occur as frequently as once per upcall.

Note that if the application is structured such that traffic from a
single interface is being handled by sockets spread across more than
one event loop, using ev_loop_attach_uinet_interface() will only
provide the ev_async_send() avoidance improvement to one of those
loops.
It is now possible to run multiple network stack instances in one
process.

The following now requires an instance to be specified:

- Network interface creation and by-name operations
- Socket creation
- Sysctl operations

This was accomplished by adapting the existing kernel VIMAGE
facility.  All instances share some global facilities, such as
memory allocation and timer processing (and for the time being,
the global accept lock), but all of the protocol stack context is
per-instance.

The rules are:

- An instance may be served by multiple packet interfaces
- A packet interface serves only one instance
- A socket belongs to only one instance
- An application thread can service sockets and control packet
  interfaces across multiple instances

Along the way:

- uinet_config.h was folded into uinet_api.h and
  uinet_api_types.h
- uinet_config_internal.h is now uinet_internal.h
- struct uinet_config_if/uinet_ifcookie_t is now struct
  uinet_if/uinet_if_t, consistent with other libuinet opaque data
  types

Other notes:

- uinet_register_pfil_in is instance-specific
- The host sysctl access api currently acts on the default
  instance only. An instance selection mechanism needs to be
  added.
Remove stray printf
Add libcrypto to the the list of dependent libraries under FreeBSD.
- Remove unnecessary initial syncs in the if_netmap transmit and
  receive threads.

- Remove unnecessary rx sync in the if_netmap receive thread.

- Handle EBUSY return from tx sync (which represents concurrent access
  to the same ring by another actor, such as the vale switch) and only
  perform the sync when not otherwise performed by poll.
Add kthread stop API.
Make kthread stop check interval a property of the thread.
Improve batching efficiency when there are overlapping batches from
multiple interfaces.
Updated if_netmap to use the new kthread stop facility.

Adjusted default min stop check interval to hz / 2.
Merge remote-tracking branch 'origin/rx_batch'

Conflicts:
	lib/libuinet/uinet_if_netmap.c
On shutdown, shut down all instances instead of destroying them.  This
avoids a number of issues with application threads, the callwheel, and
netisr queues retaining references to instance state after it has been
destroyed.

Also fix a couple of issues with instance shutdown in VIMAGE
vs. non-VIMAGE builds.
Merge remote-tracking branch 'origin/multi_instance'

libuinet now supports multiple instances within one process.  Each
instance has its own stack state, but some facilities, such as memory
allocation and timers, are shared across all instances.

The default instance exists after uinet_init() is run and can be
retrieved with uinet_instance_default().  Additional instances can be
created with uinet_instance_create().  There are still some lingering
issues with uinet_instance_destroy() concerning lingering state on the
timer callwheel and possibly in netisr queues.

Note that uinet_config.h has been removed and its contents folded into
uinet_api.h and uinet_api_types.h.

Conflicts:
	lib/libuinet/api_include/uinet_api.h
	lib/libuinet/api_include/uinet_config.h
	lib/libuinet/uinet_api.c
	lib/libuinet/uinet_host_sysctl_api.c
	lib/libuinet/uinet_if_netmap.c