cmp.c: cmp_open handles symlinks w/o O_NOFOLLOW

order of operations changed.  it used to be: first open, then
(maybe) fstat.  if you used -h, open was called with O_NOFOLLOW
(so it failed for symlinks), and then there was no descriptor to
call fstat with; the stat info was carefully avoided for the rest
of the code path.

now it is: first fstatat, then (maybe) open.  the race introduced
by this is inconsequential: if the files are being changed while
cmp(1) is running, the result will be meaningless anyway.

bonus: the EMLINK/ELOOP schism is gone.
int hflag, lflag, sflag, xflag, zflag -> int opts

everything has int opts parameter
eofmsg takes struct finfo * instead of const char *
diffmsg takes struct finfo * instead of const char *
less struct finfo * deconstruction in c_* functions

getting ready to slash the code down a bit more
link.c: c_link w/o internal code duplication
regular.c: ROUNDPAGE macro was dirty, is gone

the gain from having a nice name for the operation was overshadowed
by the lossage incurred by the "hidden parameter" pagemask.