Polymorphic serialize/deserialize interface

Breaking change on little-endian systems.

Serialization and deserialization of questions and answers
can now be done incrementally to/from a file, memory buffer,
etc. as deemed by the caller.

A common interface eases development of questions and
answers and fixes a number of issues such as endianness.
Close file after hashing contents

Bug detected by the clang static analyzer.
Fix dead code warning by clang static analyzer
clang static analysis build

Run e.g.:

    make clang-static-analysis scan_build=$HOME/Downloads/checker-276/scan-build