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()
Move Stage()/Unstage() tests to their own files
Add PathspecsOptions to Repository.Index.Unstage()/Stage()