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.