Pass `-z` arg to git ls-files & split on null char

It seems a little bit paranoid to assume there might be a newline or
tab in a file name, but it's perfectly valid on many systems. When such
a character exists in a filename, `git ls-files` will return something
like `"file\nname"` in its listing, which is problematic because the
calling code expects neither the escaped whitespace nor the quotes.

By passing the `-z` argument, git uses the null character as the sep-
arator, never escaping whitespace nor quoting file names.

Additionally, I found I had to use the "\x0" syntax to represent the
null character because "\0" is ambiguous in the context of for instance
`String#sub`.