+ "ehcache"
[git] Log parser: remove second path absence verification

Second path existence is not required for renames/copies
(and the assertion on that was removed some time ago)
Second path absence is implied for other types of changes,
but there is no real point on verification of this.
[git] Rename GitCommit -> GitHeavyCommit as a preparation to deprecation

GitCommit object is cluttered with a lot of fields which sometimes
are populated, sometimes not, and some of which are completely
unrelated to the commit object (like tags, branches or current branch).

It should be removed and changed to something more clear,
but the name is good => renaming the old bad guy.
[git] Introduce new GitCommit & optimize some history

Introduce GitCommit as a preferable way to store detailed information
about a commit (instead of GitHeavyCommit).
Use this new guy to query full history from Git.

Rewrite GitHistoryUtils#history(project, root, params): get the whole
log output at once and then parse it instead of parsing line by line.
This is much more effective that the previous implementation,
it just shouldn't be used to query millions of commits.
[git] Log parser: support both short and long hashes

If short parent hashes were not requested from Git, don't fail,
but use long ones. If they were not requested, well,
then we have no choice but failing.
[git tests] Better assertion

Sometimes this assertion fails on the build server.
Let's take a look at the whole output.
WEB-7837 Use relative paths when selecting a "double" tapping autocomplete