Add ExplicitPathsOptions to Repository.Diff.Compare()

All the overloads can now report and/or fail upon unmatched explicit paths.
By default, the passed list of paths will be treated as a list of pathspecs.

When an ExplicitPathsOptions is passed to the overloads, this list of paths
will be treated as explicit paths. In that case, the default behavior is to
throw when one of this explicit path is unmatched.
Add ExplicitPathsOptions to Repository.Reset()
Add ExplicitPathsOptions to Repository.Index.Unstage()/Stage()