Make Index.Remove() able to remove folders

Fixes #327
Make Index.Remove() able to remove only from index

Fixes #270
Improve support for git rm --cached semantics

Lots of test cases added, to mimic git rm --cached behavior.
Move Index.Remove() tests to a separate file
Switch internal implementation of Index.Remove() to git_index_remove_bypath()
Cleanup ConflictFixture
Add BaseFixture.CloneMergedTestRepo()
Add test to ensure conflicts are cleared when calling Index.Remove()

Beware, this is supported only for files which exist in the workdir (cf. comment in code).
Partially fixes #325