Three fixes for Windows E2E failures:
1. cm_cli reinstall_node(): URL-based node specs used the full URL
as lookup key, but internal dicts are keyed by repo basename or
cnr_id. Use get_cnr_by_repo() for CNR-aware lookup with correct
is_unknown flag.
2. git_helper.py gitclone(): disable tqdm progress when stderr is
piped (sys.stderr.isatty() gate) to prevent pipe buffer deadlock.
Also move stale directories from previous failed clones into
.disabled/.trash/ before cloning (GitPython handle leak on Windows).
3. try_rmtree(): 3-tier deletion strategy for Windows file locks:
retry 3x with delay, rename into .disabled/.trash/, then lazy-delete
via reserve_script as final fallback.