Allow empty trees for all GTDiff initializers

Otherwise, it's impossible to figure out what the contents of the
initial commit will be.
Add explicit repository arguments to all diff constructors

And allow more things to be nil, matching libgit2.
Merge pull request #175 from libgit2/allow-nil-diff-trees

Allow empty trees for all GTDiff initializers