unifdef: read definitions an undefinitions from a file

Submitted-by: Steve Underwood <steveu@coppice.org>
unifdef: use -f option for definitions files, and add documentation
unifdef: cleanup addsym() code duplication and name undefile()
README: credit Steve Underwood
unifdef: stylish undefile()
unifdef: correctly handle multiple input files with differing newline styles
unifdef: better error handling and style for defundef()
tests: check basics of -f
unifdef: trace -f activity only in debug mode
unifdef: refactor parseline()

Create functions for finding preprocessor directives and for skipping
trailing junk and non-preprocessor text. This simplifies parseline()
and it will also be useful in defundef().
unifdef: improve handling of weird whitespace

This fixes the handling of lots of whitespace on a line,
and restores proper handling of final lines without newlines.
tests: add missing if1.h
tests: check handling of weird whitespace
unifdef: count lines correctly when processing multiple files
Makefile: need a dependency on unifdef.h
reversion: avoid spurious rebuilds in a dirty tree
unifdef: Fix the behaviour of #define without a value

On the command line, `-DFOO` is a short-hand for `-DFOO=1`
whereas `#define FOO` is like `-DFOO=`.
unifdef: more refactoring in -f mode

Moving towards sharing more of the parsing code between -f header
files and normal source files.
tests: display progress
unifdef: 64 bit evaluator, and quell type conversion warnings