Makefile: correct dependencies and portability to GNU make.

My aim was previously to rely on make's built-in rules to
build unifdef, on the assumption that this would be the
easiest way to do the right thing on unknown systems.

The right way to specify the dependencies for unifdef is:

unifdef: unifdef.c unifdef.h version.h

However GNU make has an incorrect implicit rule:

.c:
        $(LINK.c) $^ $(LOADLIBES) $(LDLIBS) -o $@

This puts all of the prerequisites on the command line, which
causes things to break. POSIX specifies the implicit rule as

.c:
        $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $<

And POSIX says "In an inference rule, the $< macro shall evaluate
to the filename whose existence allowed the inference rule to be
chosen for the target". In our case $< expands to just unifdef.c
which is what we want.

Putting .POSIX in the Makefile does not cause GNU make to use the
posixly-correct implicit rule definition.

The previous version of the Makefile had incorrect dependencies
which meant that GNU make (and probably other versions of make)
would not rebuild unifdef if the header files were touched. So
to fix that bug, and to work around the buggy implicit rule in
GNU make, the Makefile now has an expanded version of the
standard POSIX build rule for unifdef.
INSTALL: more portability notes.