Guard against marshaling invalid handle as GitOid

Related: https://bugzilla.xamarin.com/show_bug.cgi?id=11417
Support additional paths with temp clone
Add submodule test repo
Add Submodule bindings
Add SubmoduleLazyGroup
Add Repository.Submodules

Includes submodule support in Index.Stage() to fix #220
Support retrieving submodule Id in TreeEntry
Introduce SubmoduleCollection.Lookup()