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
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