[log] Correctly load details of commits around the selected commit

PROBLEM:
To improve loading commit details we don't load it just for one
selected commit: instead we take several commits before and after it
in the table - and load details of all of them in a single command,
and then save to the cache.

However, we used to work only with Nodes in the graph. And when the
log is filtered, and the graph is built only for the part of the log,
there can be no Nodes for selected Hashes (IDEA-116718). Also commits
which stay near each other in the filtered list, can stay far away in
the graph => loading batch of Nodes around it won't affect commits
which are really around selected one in the current table view
(IDEA-116834).

SOLUTION:
* Declare AroundProvider interface which is to identify which commits
  are currently around the selected one.
* Provide different implementations for logs with graph and without it.
* Since graph model works with Nodes, and non-graph model works with
  Hashes, parametrize AroundProvider with the CommitId type.
* Move load-around-stuff from DataGetter to the NodeAroundProvider,
  and a single DataGetter#getCommitData which works with different
  types of commit ids with the help of supplied AroundProvider
  (instead of separate implementations for Node and for Hash).

(cherry picked from commit 77fcd324153cd3815829c20fde7ada3673237adc)
[log] Supply correct commit object to getCommitData in DetailsPanel

Introduce AbstractVcsLogTableModel#getCommit which returns a Node for
the graph table, and Hash - for the non-graph one.

(cherry picked from commit 9a92cb95ea404280f30fa422de0b3c71bc6d7fac)
[log] Fix identifying root of Node

It was mistakenly taken from the selected Node
instead of the Node being iterated, because of a misprint

(cherry picked from commit cb5ee8641f42b078ef9310172f88c0232bd67558)
[log] Take END_COMMIT_NODE as well as COMMIT_NODE

(cherry picked from commit 34ab25e2273911e105184def6d2d77ae28304646)
[log] simplify

Remove onSuccess, just make sure loading indicator is hidden after
setting up new table model.

(cherry picked from commit 12fd8d45add703f9f8504180dc117d1a913bb221)
[log] IDEA-115423 Limit number of commits requested when filtering

At first filter in-memory.
Then request maximum 1000 matching commits from the VCS.
Only after it, if needed, request remaining commits.

* Introduce LoadMoreStage to indicate whether we have already requested
  more commits from the VCS or not.
* Pass it between the NoGraphTableModel and VcsLogFilterer: old value
  is passed in requestFromVcs (called from getValueAt); new one is
  passed to the new NoGraphTableModel instance in the constructor.
* Additionally check in requestFromVcs that VCS is requested only
  once, since getValueAt can be easily asked for the last element
  several times.
(cherry picked from commit 8420f9e)
[vcs] IDEA-118644 Fix apply patch for new file in new folder + test

We still can find a better match if we search from the previous path
component, e.g. in the case described in the bugreport: when new
file is created along with one or several subfolders.

Add a test for this case + one more test for adding a file generated
from a super-root.

(cherry picked from commit b801015d0c53d397793ba93f40c905c22a5403cc)
[git log] Don't display "index" and "stash" pseudo-commits in the log

* Use HEAD --branches --remotes --tags instead of --all
* Define a constant for this set of options already used in several
  places.

(cherry picked from commit 76acb3eebbcd177fe3f3b1729a692d0a5190cf00)
[log] Flush the Hash->Int persistent map more often

After loading data from the VCS.

(cherry picked from commit c395dcfcb198f4440e1884f91dc9fa0d08d62129)
[log] IDEA-117680 IDEA-116207 Fix showing Changes for multi-selection

* MainFrame: remove single-selection limitation.
* Move pre-sorting of selected rows and post-zipping of Changes to
  the single place in VcsLogGraphTable
  (zipping was made in GraphTableModel; sorting was incorrect
  in both models).
* Add javadoc for getSelectedChanges & use List instead of int[].
* Improve javadoc for zipChanges()

(cherry picked from commit f18f1b5feaf9b01e5acce205a7debe8a25b86487)
[git] Understand renames in the log

It fixes IDEA-114111 (cherry-pick doesn't commit renames)

-M makes the log perform rename detection within a single commit.
It is specified in other methods in GitHistoryUtils,
but was forgotten here.

(cherry picked from commit ea6618753e57a15a94ba392bac958c9791ce012d)
Make the constant final

(cherry picked from commit 213c1d6a6d22dbf6138487e106672af458c666d6)