Change the isRepo() semantics to “inside work tree”

Before we were considering everything inside a git
repository to be ok for the `isRepo` check. Some git
commands however expect that they are run inside
the work tree and won’t work inside the `.git`
directory.

Because of that when we entered a .git directory
the child was dying – git status failed.

This commit changes how `isRepo` works – it now returns
whether we are in the working tree, and returns `false`
if we are in the `.git` directory.

I don’t care what happens when we go in the `.git`
directory itself. It’s an edge case, so I am OK
with excluding it from some git commands, even if
the information might make some sense.