[log] Refactor: move ref painter & drawRefs & calc refs padding to the common parent class
(cherry picked from commit 3bb3524)
[log] IDEA-116950 Don't display all tags if there are too many of them

* Adjust RefPainter so that it calculates padding for Strings instead
  of refs (using the same sizes as in drawLabel).
* When drawing refs, substitute tags (if there are more than 1 of
  them) with "first tag + N more" label.
(cherry picked from commit 9f24b72)
[log] IDEA-116950 Draw just "tag +" instead of "tag + 5 more"
(cherry picked from commit 49a033a)
[log] Make "show details" & "show long edges" actions dumb aware
(cherry picked from commit 726ffc1)
[vcs] IDEA-115571 Don't clean change lists's commit message until committed

PROBLEM:
1. User clicks "Commit".
2. CommitChangeListDialog#doOKAction is executed.
3. It calls saveCommentIntoChangeList and saves the commit
   message into the active change list.
   It also calls saveDialogState which persists commit message in
   history.
4. Then it calls the pre-commit executors.
5. Then it calls defaultListCleaner.clean(), which effectively cleans
   the commit message.
6. When the commit dialog is invoked again (after reviewing analysis
   results), it looks for the commit message.
   The change list doesn't have one => asking getDefaultMessage from
   the CheckinEnvironment.

SOLUTION:
clean the default change list comment only if checkin handlers allowed
to commit.
(cherry picked from commit 9de9e34)
menu is not visible on Linux + IntelliJ theme

(cherry picked from commit 61ee967d1b8c33141f7ac1d13dd5470778f95698)
grayed text is invisible on Linux

(cherry picked from commit 4696e18f581085feac918933b072f1a001cb52b7)
special icon for 'generated source' roots: added file forgotten by first cherry-pick (cherry picked from commit 35806f22)