enable -Wshadow in build-all-variants.sh
use a constant NFAI_PARSER_BUF_SIZE rather than sizeof(parser->buf)

This is primarily because I wanted to run with buf allocated on the
heap so that accesses could be checked by valgrind, and of course I
couldn't use sizeof on a dynamic allocation.
add a simple fuzz test program

The fuzz tester (the simple random-input version) has already found a
couple of bugs. The grammar based fuzzer hasn't found anything so far,
but I'm hopeful that it will be more useful with more tuning to produce
interesting inputs, and with the addition of a mode to generate from
the grammar and then make some random character changes to add errors.

Either fuzzer will be more useful with the addition of extra internal
consistency/invariant checks within the library itself.  Since the
fuzzers don't have a mechanism for checking that the actual output
of the library is *correct*, their primary purpose is just to exercise
a variety of code paths, and particularly to give coverage for "weird"
input that might not otherwise be tested.

It would be interesting to check actual tested code coverage (with gcov
or similar) when running these fuzzers to see how well they do.
gitignore the fuzz program
add a script to build as a shared library

This is really just to document an appropriate build command
for producing a shared library, not because libnfa *should*
be built as a shared library. libnfa is designed to be plugged
into an application directly, not linked dynamically, but
who knows what people might want in the future?

Key features of the shared lib:
- builds with debug and produces a stripped version
- applies symvers to the exported symbols
- hides non-exported symbols