Require ragel for tarball builds (and related refactoring)

Ragel has become a lot more standard and available in recent
years, and this saves us from distributing an extra ~544K of
machine-generated C source code in tarballs.  It also brings the
tarball and git repo forms of the tree into closer alignment.

As of this commit, the diffs in both directions are:
  In the tarball but not the git repo:
    All the files generated by "autoreconf -vi"
  In a git repo checkout but not the tarball:
    /.travis.yml and any file/dir that matches /^\.git/

This commit also incidentally cleans up some Makefile.am nits,
including one that would sometimes break parallel make in the
libgdnsd directory due to a dependency issue.  It also gets rid of
the previous bad habit of generating ragel output into the source
(rather than build) tree.
Use -fvisibility=hidden and gc-sections linker stuff

This replaces our previous use of export-symbols-regex for
controlling symbol visibility in DSOs, and also turns on gcc's
function/data sections with link-time garbage collection to kill
dead code/data.

There was no net change on the visibility front, as we were
already managing that well with a combination of regex filtering
and aggressive use of the static keyword, but this is the better
technique in the long run, especially as things are likely to more
complex down the line.

Some header contents were re-arranged so that the necessary extern
definitions are in a single block for wrapping in a default
visibility pragma.  Those compilers not supporting the gcc-like
visibility flags/pragmas (which arose around gcc 4.0) should still
build the code fine, they'll just potentially be exporting more
symbols than they need to.  I don't think this is a major problem
in practice.
Add libunwind backtraces to dmn_assert() + alloc failures

This adds an optional dependency on libunwind.  If present, the
log formatter dmn_logf_bt() will add a backtrace to
a log message.

Backtraces have been added to dmn_assert() for developer builds
and fatal memory allocation errors in all builds for now.  Could
be added to other fatals as appropriate down the road as well (the
criteria being that the fatal is in a common deep function where
things are difficult to track down without further context).

If libunwind support isn't available at compile time,
dmn_logf_bt() falls back to returning the string "(no libunwind)".