More resilient registry removal
With the previous order of operations, there could be warnings from race conditions between two process A and B removing and installing Python versions.
* A removes the files for CPython3.9.18
* B sees the key CPython3.9.18
* B sees that CPython3.9.18 has no files
* A removes the key for CPython3.9.18
* B try to removes the key for CPython3.9.18, gets and error that it's already gone, issues a warning
We make the more resilient in two ways:
* We remove the registry key first, avoiding dangling registry keys in the removal process
* We ignore not found errors in registry removal operations: If we try to remove something that's already gone, that's fine.
Fixes #14714 (hopefully)