Remove file existence check; add equivalency check

GNU `cp` does not require that the destination not exist in the case of `cp
SOURCE DEST` usage as I previously thought; that check has been removed.
However, it does error if the paths given refer to the same file, (traversing
symlinks); a check for that was added.
Refactor equivalence test into function