refactor libgdnsd initialization, includes, and symbol exports

*) The public libgdnsd headers were moved from libgdnsd/gdnsd/ to
include/gdnsd/ within the source tree.  The installed paths remain
unchanged.

*) The private libgdnsd headers <gdnsd/*-priv.h> were moved to the
libgdnsd/ directory and split into -priv and -prot headers as
appropriate.  The interfaces in the -priv headers are private to
libgdnsd itself and not exported as shared library symbols,
whereas the interfaces in the -prot headers are exported as shared
library symbols but are considered exclusive to the gdnsd binary.

*) The various previously-private libgdnsd initialization
interfaces (gdnsd_rand_meta_init(), gdnsd_init_net(),
gdnsd_set_config_dir(), and gdnsd_set_runtime_dirs()), as well as
some code from src/conf.c and src/main.c related to vscf parsing
of the main config file and calling the above interfaces, were
folded into a new, singular public libgdnsd interface named
gdnsd_initialize() which takes care of all of these things.

*) The various once-only initialization functions in libgdnsd now
have protection against being called more than once.

*) As secondary positive side-effects:
  (1) a few symbols which were previously unnecessarily exported
      by libgdnsd are no longer exported.
  (2) plugins should have no need for non-public headers (even the
      in-tree plugins no longer use them).
  (3) the gdnsd binary no longer wastes time fully processing the
      config when taking simple actions that only need to know
      about the rundir setting (e.g. status, stop, reload-zones).
Split socket configuration from main configuration

This is going to be necessary for future work towards more robust
"reload" mechanisms.  Getting it out of the way now in the main
tree will reduce the size and complexity of those patches.

Mostly what's going on in this patch is the splitting of
socket-related things from cfg_t to socks_cfg_t, the splitting
of socket-related config code from conf.[ch] to socks.[ch], and
then various updates elsewhere to cope with those two things.
Remove some pointless network compat checks/hacks

This removes several pointless checks from configure.ac for
standard network library defines and functions which basically
never fail to exist on any current, reasonable platforms AFAIK,
and it's not like we had any real compatibility fallback if they
did (either fail autoconf or fail compile, take your pick!).

Perhaps the biggest thing here is dropping the autoconf check for
"-lnsl -lsocket" as required by Solaris (and other SVR4?).  Even
in the Solaris case it doesn't seem like a good idea to bother
trying.  Considering that we do lots of tricky things which
probably break on Solaris variants anyways, blindly dropping in
"-lnsl -lsocket" was just allowing it to maybe-compile with
probably-broken behavior on a mostly-untested platform that seems
to be slowly dying off (outside of Oracle anyways).
deprecate listen => scan

I believe that the current default 'any' option works for all the
use-cases people would have had for 'scan' in the distant past,
and has for a long time now (thanks to ancillary socket data and
SO_REUSEPORT).  In some cases, explicit address configuration
might be a better option than 'any', but I just don't see the
pragmatic case for using the current 'scan' behavior for an
authdns server.  It was at one time the default, but that was
primarily for lack of being able to work around ANY-address
problems via ancillary data.

The motivation here is that the scan code is pretty hacky and
heuristic and causes all sorts of code-factoring problems for
future work because it needs the ability to soft-fail bind() very
late in the startup sequence.

It's entirely possible someone will scream when this change lands
and point out some reason that the option is necessary in a real
use-case that should be supported, in which case I'll have to
either bugfix 'any' to work for them or un-deprecate 'scan'.  I
hope not, but pushing this is the easiest way to find out.