log: Implement --follow

The FollowFilter can be installed on a RevWalk to cause the path
to be updated through rename detection when the affected file is
found to be added to the project.

The filter works reasonably well, for example we can follow the
history of the fsck command in git-core:

  $ jgit log --name-status --follow builtin/fsck.c | grep ^R
  R100	builtin-fsck.c	builtin/fsck.c
  R099	fsck.c	builtin-fsck.c
  R099	fsck-objects.c	fsck.c
  R099	fsck-cache.c	fsck-objects.c

Change-Id: I4017bcfd150126aa342fdd423a688493ca660a1f
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
5 files changed