[GitWorktree] Only use non-bare clone when needed
[GitWorktree] Only use non-bare clone when needed

In the previous commit, `.checkout_at` was added and `.checkout` was
redefined to use full `git-clone` actions to handle cases universally
for all repos.

This change updates that so this strategy is only used if
`Rugged::SubmoduleError` is raised, and we fallback to the new strategy.
Otherwise we favor the much lighter `.checkout_to` strategy, which
doesn't require a new clone of the repository to do.

billfitzgerald0120/manageiq,d-m-u/manageiq,ManageIQ/manageiq,billfitzgerald0120/manageiq,mzazrivec/manageiq,skateman/manageiq,kbrock/manageiq,chessbyte/manageiq,skateman/manageiq,billfitzgerald0120/manageiq,gmcculloug/manageiq,hstastna/manageiq,lpichler/manageiq,djberg96/manageiq,NickLaMuro/manageiq,agrare/manageiq,ManageIQ/manageiq,hstastna/manageiq,d-m-u/manageiq,billfitzgerald0120/manageiq,agrare/manageiq,mzazrivec/manageiq,hstastna/manageiq,jvlcek/manageiq,d-m-u/manageiq,jvlcek/manageiq,jvlcek/manageiq,agrare/manageiq,jrafanie/manageiq,djberg96/manageiq,kbrock/manageiq,djberg96/manageiq,jrafanie/manageiq,djberg96/manageiq,agrare/manageiq,ManageIQ/manageiq,skateman/manageiq,ManageIQ/manageiq,NickLaMuro/manageiq,lpichler/manageiq,chessbyte/manageiq,lpichler/manageiq,NickLaMuro/manageiq,hstastna/manageiq,skateman/manageiq,jvlcek/manageiq,gmcculloug/manageiq,chessbyte/manageiq,kbrock/manageiq,kbrock/manageiq,NickLaMuro/manageiq,gmcculloug/manageiq,jrafanie/manageiq,gmcculloug/manageiq,lpichler/manageiq,mzazrivec/manageiq,jrafanie/manageiq,chessbyte/manageiq,mzazrivec/manageiq,d-m-u/manageiq