chownerr() would prematurely terminate the program if a error occured
(lack of permissions, nonexistant file, etc.), but POSIX.2 requires
that the chown and chgrp utilities continue on. Removing the code
that caused the program to exit turned chownerr into a wrapper
around warn(), so why not call warn() directly.
Also changed the file traversal logic so that directories are not
chown()'d twice. This only occured when the -R option was not used.