gitk refactor: split getblobdiffline into IO and text handling

I would like to hack into diffs which gitk gets from commands.
To ease it, let's divide the read handler, getblobdiffline,
into reading and subsequent handling.

Now the function named getblobdiffline performs only IO,
and other functionality moved to getblobdiffline_line and
getblobdiffline_end. Also getblobdiffline_close is introduced,
though currently it is empty.
gitk refactor: add getblobdiffline_proxy_* commands

Now actually add the commands which is going to perform
substitutions in input data. Currently they only pass data,
but let's go further.
TMP: substututed variables
gitk: more aggressive space ignoring

diff -w is not enough to ignore all insignificant changes. For example,
it does not skip newlines. To workaround it, gitk additionaly filters
the diff hunks, skipping those which actually change only whitespaces.

Instead of passing each read line directly to the diff widget, how lines
of each hunk are collected and when hunk end is detected, it is
analysed: both old and new texts are collected, then normalized and the
normalized values are compared literally. If they are different, hunk is
added to diff widget.

The normalization is implemented as normalize_string function, looks
like it correctly hands switch from kr to gnu style.

The hunk filtering is turned on for linear diffs (not for merges),
when is enabled "Ignore space change" and word difference is disabled.
TMP FIXUP: refer to development library
merge "gui.displayuntracked"
merge "advanced ignorespace"