IDEA-113535 Unified logic of collecting all items and checking if there is at least one item for "locally deleted" and "modified without editing" files
IDEA-115897: clean filter right after pressing cross button
remove duplicated check
IDEA-113468 Request write access to the document (while typing in editor) not under write action - otherwise deadlock could occur for readonly files under svn which should be made writable using "svn lock" (EDT waits for "svn lock" to finish while background thread could try showing dialog to the user (i.e. request credentials))
svn: Refactored ChangesChecker, SuperfluousRemover, Reverter - warnings fixed, code simplified, @NotNull
svn: Refactored SvnRollbackEnvironment - code simplified, methods extracted, moved related code to inner classes, @NotNull
svn: Refactored SvnRollbackEnvironment - inner classes moved to separate files
svn: Refactored SvnCheckinEnvironment - used FilePath instead of File instances, reused logic from ChangesUtil
svn: Refactored SvnUtil - simplified logic for grouping changes/files by repository url and working copy format
get rid of bunch of useless parameters
reschedule repaint for editor scrollbar with the right clip
[git] Fix non-ASCII paths unescaping problems

Fix GitUtil.unescapePath as proposed in PR#123: i is incremented in
the inner loop even after the octal part finishes => it should be
decremented back, so that next character is not missed. Add a test.
(https://github.com/JetBrains/intellij-community/pull/123)

However, it doesn't fix problems with unicode paths containing
diacritic symbols (in spite of PR#218 which proposes fix for
IDEA-132150). Such paths are always returned by Git in
octally-escaped NFD (decomposed) form, while on disk and/or in the
repository they can be stored in NFC or even non-normalized form.

Therefore make Git return unescaped paths by passing
-c core.quotepath=false to all commands.
This option is not supported for Gits older than 1.7.2 - they will still
receive escaped paths and use patched unescapePath(). Others will
receive those characters which are stored in Git database.

This won't fix the situation if a non-normalized path is stored to
the repository on Linux/Windows and then checked out on Mac (which
HFS+ automatically normalizes to NFC on read/write): the path on disk
won't match the path in repository.

But for other cases this fixes the following issues:
IDEA-84715, IDEA-116247, IDEA-132150
write vfs in write action
fire psi events for vfs events in non-cached psi dirs
Added markDirtyRecursively with filter.
Not marking whole target as dirty when it was already marked so.

This should be cherry-picked into branch 139 as extra method variant
Merge remote-tracking branch 'origin/amp/ui-search-cancel-fix'
paint line numbers with line highlighter foreground color - fixes after review
external build: progress messages for post/pre-processing tasks added (IDEA-133560)
external build tests: method extracted