Split the lazy group of commit object as two groups
Make GitCloneOptions a struct to fix issue #635
BaseFixture: easy creation of a config-isolated repository

We should try to keep the user's configuration away from the tests as it
may affect what the code ends up doing. To that effect,
InitIsolatedRepository() returns a Repository with some dummy
configuration.

This includes moving the fetch tests over to this.
RefspecFixture: use the isolated repository
BaseFixture: allow passing options to the isolated repo

By default we still generate a config-isolated Repository, but if the
user passes their own options, we'll use that instead.
Enrich the merge base

1. Bind git_merge_base_many and git_merge_base_octopus
2. Drop git_merge_base
3. Introduce enumeration MergeBaseFindingStrategy
4. Refactor the test case