Eagerly detect unreleased unmanaged resources

This is only active in the LEAKS build configuration.

This helps detect errors that are now more visible since libgit2/libgit2sharp#330
Remove useless GC.SuppressFinalize()
Fix double instantiation of ObjectSafeWrapper
Properly handle unmanaged resources cleanup in Repository constructor
Fix Diff.Compare() Obsolete message
Add PathspecsOptions to Repository.Diff.Compare()

All the overloads can now report and/or fail upon unmatched pathspecs.
By default, the behaviour is strict (exception thrown if no PathspecsOptions
is passed).
Add PathspecsOptions to Repository.Reset()
Add PathspecsOptions to Repository.Index.Unstage()/Stage()