Fix reading lines from 'git ls-files -s'

Reverts mistake from 62932e0f74102d3c65a0e3e6e2de3673e64741d8
Count large blobs starting from 0 (affects diagnostics only)
fat find: encoding fixes

Use binary IO and byte strings in more places. Some formatting is more
cumbersome, but we really want to use raw bytes when interacting with Git
because that's what it provides us and that's what it expects. Decode when
writing to stdout because that is expected to be read by a human.