fix(fs/ops): fallback to copyfile for cross-device failures

This was previously only handled in the case where the file already
exists. If it didn't exist the error was raised instead of falling back
to copying.