Fix condition for doing windows diff or not
Use 'help' filetype for Add/Deleted info window

For nice looking.
Do not open same file twice
Rename var [begin_rev, rev] to [rev_at, rev_aside]

Variable meaning in different contexts:

    Use case             rev_at            rev_aside

      diff        current working tree        HEAD
 diff --cached      staged content            HEAD
   diff A..B          revision A           revision B
Move main splitting job to s:split_window function

Buffer name and filetype are now decided outside this function.
Show '(HEAD)' on split window

With `git diff` or `git diff --cached` without specific revisions,
split buffer content is fetched from HEAD, so it should display
'(HEAD)' instead of empty '()'.
Add path variable to simplify 'prefix + rel_path'
Add file path to Add/Deleted info window title
Start 3-way merge for Unmerged file
Stop detecting unmerged files in ruby script

Finally we can treat unmerged files properly.
Fix title for `diff --cached` aside window

Should be 'HEAD', not 'staged'.
Extract log retrieving function as s:get_log()
Improve rebasing / other conflict handling

Distinguish Rebasing and other Unmerged conflicts,
provide different log info formats for each.
Fix rebasing detection when not in toplevel
Fix reopen #info and minor change log wording
Add `conflict_type` to hold the reason of unmerged

Detect rebase, merge, cherry-pick and stash applying.
Derive conflict info for cherry-pick and stash

Use .git/MERGE_MSG when available.
Simplify diff info generation, change some wording
Fix some git_dir file reading

- Use `s:git_dir()` instead of hard coded `.git`.
- head_name should allow characters other than `[a-zA-z]`.
Fix current commit detection for rebase info

In .git/rebase-merge, use `stopped-sha`, not `orig-head`.