Safer file move

Zinc was only handling the error if the destination already existed during a file move in 1 place, but it was moving files in 2.

This unifies the file move error handling logic and adds tests.