Git.{dirty,staged,unstaged}: alternate, saner fix to #4349.

This is rapidly becoming my least favorite issue ever. This avoids
the diff.dothewrongthingbecauseitsslightlyfaster git option bug since
that atrocious option apparently only applied to "porcelain".