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
Update libgit2 binaries to 71ba28e

https://github.com/libgit2/libgit2/compare/36a80fd...71ba28e
Expand Merge API.

This includes refactoring of the merge logic to support different merge workflows, including pull.

Also adds a simple repository to perform merges in, simplying test logic.
Remove Network.FetchHeads from the public API.
Remove Repository.MergeHeads from public API.
Introduce PullOptions.