grep: display correct user/revision for --all in reverse.
Also handle multiple occurrences of the same line by storing
linestates in an array instead of a dict, and using difflib
to compute the difference between linestates.
adding a
adding b
adding t.h
adding t/x
a
NONEXISTENT: No such file or directory
a
b
t.h
t/x
a: No such file or directory
NONEXISTENT: No such file or directory
b
t.h
t/x
a
NONEXISTENT: No such file in rev ce18e5bc5cd3
a
t/x
b
t.h
% -I/-X with relative path should work
b
t.h
t/x
t/x
t/x