Guard Repository.Ignore against invalid parameters

Fix #346
Fix credential acquire callback interop
Merge pull request #348 from jamill/credential_callback_fix

Fix credential acquire callback interop
Teach repo.Ignore.IsPathIgnored() to cope with Windows directory separators

Fix #347
Use Trace.WriteLine when directories cannot be cleaned (in tests)

We were previously raising an exception, which meant that there was no way to know if the test was successful or not.
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
Avoid failing tests in directory cleanup
Stop sorting collections
Add Repository.PathComparer
Add StringPropertyComparer
Use PathComparer in TreeChanges
Respect PathComparer in BuildRelativePathFrom()
Use PathComparer in Index
Use PathComparer in RepositoryStatus
Throw if FilePathComparer should have been used