Fix the -f option to follow the directions in POSIX. Specifically, when
the destination file exists, first try opening it with flags O_WRONLY
and O_TRUNC, and only unlink it if the open fails.
Instead of just stat(2)ing the dest file to see if it exists, be sure to
distinguish correctly between the dest file, and the file pointed to by
the dest file in the case that the latter is a symlink.
Don't follow symlinks if the -P flag is specified.
Merge branch 'cp-symlink-dst' into markj

Conflicts:
	bin/cp/cp.c
	bin/cp/extern.h
	bin/cp/utils.c
Add regression tests for cp(1).
Merge branch 'cp-symlink-dst' into markj