git_repository_state_cleanup() should remove rebase-merge/, rebase-apply/ and BISECT_LOG
graph: handle not finding a merge base gracefully

git_merge_base() returns GIT_ENOTFOUND when it cannot find a merge
base. graph_desdendant_of() returns a boolean value (barring any
errors), so it needs to catch the NOTFOUND return value and convert it
into false, as not merge base means it cannot be a descendant.
Update submodules with parent-tracked content

This updates how libgit2 treats submodule-like directories that
actually have tracked content inside of them.  This is a strange
corner case, but it seems that many people have abortive submodule
setups and then just went ahead and added the files into the
parent repository.  In this case, we should just treat the
submodule as if it was a normal directory.

Libgit2 will still try to skip over real submodules and contained
repositories that do not have tracked files inside them, but this
adds some new handling for cases where the apparently submodule
data is in conflict with the actual list of tracked files.
userdiff: update C/C++ patterns

This pulls upstream changes from:

  git/git@8a2e8da367f7175465118510b474ad365161d6b1

  git/git@abf8f9860248d8c213600974742f18dadaa8fbb5

  git/git@407e07f2a6f55e605fda9e90cb622887269f68b5

all by Johannes Sixt <j6t@kdbg.org>.
userdiff: update ada patterns

This is the moral equivalent of

  git/git@39a87a29ce364ed3337e535adce5973731ba2968

from Adrian Johnson <ajohnson@redneon.com>.
Merge pull request #2258 from libgit2/jk/userdiff-cc

pull userdiff pattern updates from git.git
Merge pull request #2257 from libgit2/rb/fix-submodules-with-tracked-content

Update treatment of submodule-like directories with tracked content in the parent
Rewrite `git_repository__cleanup_files`
Merge pull request #2259 from libgit2/vmg/state-cleanup

Rewrite `state-cleanup`