This directory contains the program entry point, thread management, and
control functions.

* The main / foreground thread services control inputs from signals, the
  command line shell (if enabled), etc.

* The packet / background threads service one input source apiece.

The main_loop() starts a new Pig when a new source (interface or pcap,
etc.) is available if the number of running Pigs is less than configured.

It also does housekeeping functions like servicing signal flags, shell
commands, etc.

The shell has to be explicitly enabled at build time to be available and
then must be configured at run time to be activated. Multiple simultaneous
remote shells are supported.

Unit test and benchmark testbuild options also impact actual execution.

Reload is implemented by swapping a thread local config pointer by each
running Pig.  The inspector manager is called to empty trash if the main
loop is not otherwise busy.

Reload policy is implemented by cloning the thread local config and 
overwriting the policy map and the inspection policy in the main thread. 
The inspector list from the old config's inspection policy is copied 
into the inspection policy of the new config. After the config pointer 
is cloned, the new inspection policy elements (reloadable) such as 
inspectors, binder, wizard etc are read and instantiated. 
The inspector list of the new config is updated by swapping out the 
old inspectors, binder etc. with the newly instantiated elements. The
reloaded inspectors, binders and other inspection policy elements are 
marked for deletion. After the new inspection policy is loaded, the 
thread local config pointer is swapped with the new cloned config 
by running Pig. This happens in the packet thread. The inspector manager
 is then called to delete any reloaded policy elements and empty trash. 
