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.
Fix typo.
Add missing promiscuous mtag l2info flags init in input path.
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
Merge branch 'master' into passive_receive_adrian_vnet

Conflicts:
	lib/libuinet/Makefile.inc
	lib/libuinet/api_include/uinet_api.h
	lib/libuinet/uinet_api.c
	lib/libuinet/uinet_host_sysctl_api.c
	sys/net/if_ethersubr.c