Hard reset before checkout

Ensure that the pushmanager can recover from the git repo being in an inconsistent state, performance tweak.

- Hard reset and clean pre-checkout to prevent checkout being blocked by unstaged changes
- Force delete / recreate of test branches, to fix branches that might not have been cleaned up properly
- For performance reasons, only perform a fetch when a new remote or pickme has been added