🐛 Prevent removing of nonexistent files in a conductor transaction
🐛 Prevent removing of nonexistent files in a conductor transaction

Summary:
Sometimes a file may not exist in a project folder, even though a template may claim it exists. Conductor will create a transaction to remove that file. If the file doesn't exist, os.remove will raise an exception.

This changeset checks if the file exists before deleting it. If the file didn't exist, it's logged but otherwise ignored.

Additionally, I added a better end condition to prevent cleaning up empty directories to spin all the way out of a user project.

Closes T614

Test Plan:
```
prosv5 c n test-D171 v5 3.0.7
rm test-D171/include/pros/tmei.hpp
prosv5 c u --project test-D171
```

Failed pre-D171 and worked fine after this patch.

Reviewers: O3 The Q Continuum, brookea

Reviewed By: O3 The Q Continuum, brookea

Subscribers: brookea

Tags: #zorp

Maniphest Tasks: T614

Differential Revision: https://phabricator.purduesigbots.com/D171

purduesigbots/pros-cli