make SubmoduleCollection.GetEnumerator virtual

This is so it can be faked in unit tests.
meta fixture ensuring GetEnumerators are testable

fix other non-virtual GetEnumerators

the simplest thing that works

simpler still

when in Rome…
Make tests target non obsolete overloads
Refactored Repository.Clone with CloneOptions

Fix #536
Run mono with the --debug option

This tells mono to load the debug information and lets the unit testing
framework show stack traces with line numbers in them, which is quite
handy.
Allow notes retrieval by namespace and ObjectId

Might help scenarios like http://stackoverflow.com/questions/22468146/
Update libgit2 to 36a80fd

https://github.com/libgit2/libgit2/compare/65e9dc6...36a80fd
Bind git_remote_fetch()
Bind git_reference_remove()
Enable now passing test assertion
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
Drop uninteresting information from Exception messages
Introduce default credentials

Abstract Credentials, providing UsernamePasswordCredentials
and DefaultCredentials.
Introduce EmptyCommitException

By default, we now throw an exception when trying to commit an
"empty commit" - that is, one that does not change any items.
This check only applies when doing a normal commit, or an amend
of a normal commit; it does not apply when performing a merge or
an amend of a merge commit.  This check can optionally be overridden.