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
Enable now passing test assertions
Update libgit2 to fd61f05

https://github.com/libgit2/libgit2/compare/36a80fd...fd61f05
Update libgit2 binaries to 923c840

https://github.com/libgit2/libgit2/compare/fd61f05...923c840
Clone Recursively

Added CloneOptions.Recursive to specify whether submodules should be
initialized and updated after checkout