{Support printing post-context lines}

{!Support printing pre- and post-context lines around changes!}
fix for jshint
Variable `lastPrintedLine` isn't useful, remove it

When printing at least one context line, `postContextLine` is always
`lastPrintedLine`+1. On the other hand, if we don't print context
lines at all, both variables have no use.
Change `columns` to `wrapWidth` because `columns` is confusing
Move config vars for printing string diffs to module scope

They were previously defined in the `_generateStringDiff()` function.
Now they can be changed using an exported method.
Don't pass config vars for printing string diffs as args

Since we moved these config variables to the module scope, we no
longer need to pass them as function args.
{Adapt `_lineBreak()` to take the indent amount as an argument}

Previously the indent amount of 4 was hardcoded.

{!Various refactorings and minor enhancements!}
{Support printing changed lines}

Each changed line is printed as one or more parts, each part is
a continuous range of columns containing one or more column changes
that are close enough to each other. Each part can be printed to
multiple lines in the screen, according to the limitation by
`wrapWidth`.

If two column changes are far away to each other, we put them into
different parts, and don't print all columns between them. We only
print some context columns after the first change and before the
second change.