Support diff for blobs
Repository: allow retrieving the default signature

Make it easier to grab the default signature for a repository by adding
a getter at the Repository level.
Commit: allow retrieval of the tree's ID

Let the user retrieve the ID of the commit's tree instead of having to
load the tree just to retrieve this information.
Commit: allow retrieval of the parents' ids

Don't force the user to load the parents in order to get their ids, but
expose a list of the ids directly.
TreeEntry: add rich comparison function

Allow direct comparisons between TreeEntry objects, which also allows us
to use assertEqual in the sanity check test.

This fixes #305.
Config: switch from foreach iterator

An iterator is much more natural in python, so let's use that.
Merge remote-tracking branch 'carlos/commit-attr-id'
Merge remote-tracking branch 'carlos/config-iterator'
Merge remote-tracking branch 'carlos/treeentry-cmp'
Refspec: create the type to wrap refspecs
Refspec: implement transform functions
Refspec: add documentation
Remote: handle the case of a missing url
Remote: allow access to the push url
Tree: let contains look in subtrees

Allow looking in subtrees as a convenience in the 'contains'
function. As slashes are not allowed to be part of the name of an entry,
there is no ambiguity in what they mean.
Merge remote-tracking branch 'carlos/push-url'
Merge remote-tracking branch 'carlos/tree-deep-search'
Add fetch & push refspec.
Remote: make fetch/push_refspecs attributes

This is a lot more pythonic than two sets of getter-setter
functions. The old ones are left for backwards compatibility but they
should be removed in the next release.
Remote: harden the resfpec setters

The object passed must be a list of strings, so make sure we fail by
raising an error instead of segfaulting.