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
Less test cases, in order to let test the PR quickly.
Introduce git_merge_base_many and git_merge_base_octopus
Introduce Enum of merge base
Test cases