diff: normalize text encodings on the fly

This is a proof of concept for normalizing text encodings
before comparing files. The resulting diff can't be applied,
of course, which puts it in roughly the same boat as
textconv (and we rely on the textconv infrastructure here to
do it).

You can't use a regular textconv to do this, because we want
to detect whether to use it based on the file's _content_,
whereas textconv is a gitattribute triggered by the
_pathname_.

This builds on libicu for the detection, so you need to turn
the HAVE_LIBICU knob in the Makefile. Unfortunately, libicu
is quite slow:

  $ time git log -p -1000 >/dev/null
  real    0m0.443s
  user    0m0.408s
  sys     0m0.032s

  $ time git -c diff.converttext log -p -1000 >/dev/null
  real    0m8.738s
  user    0m8.692s
  sys     0m0.056s