A pretty significant rewrite of dns323-firmware-tools

I've completely restructured the codebase to revolve around a class
(DnsFirmware), with shim wrappers to handle command line parsing and calling
out to the relevant functions in DnsFirmware.  This makes everything nicely
testable, which I've taken advantage of by putting together a test suite
that just requires the addition of a great pile of firmware files (which I
leave as an exercise for the reader).

The nice thing is that nothing should have changed from the perspective of
the command line tools.  Everything there should operate exactly as it did
before.