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.
Oid: Deprecate 'hex' in favour of str() or unicode()

Python has built-in functions to get a string representation of an
object id, so let's use that instead of using a custom attribute.
Object: move to use an 'id' attribute instead of 'oid'

This looks like a left-over from the libgit2 misnaming. The current
consensus is that 'oid' is the data type and 'id' is the name of the
attribute.
TreeEntry: move to use 'id' attribute for the object's id

Similar to the Object change, we should be using 'id' when referring to
the target's id.x
docs: adjust to recent changes

It seems I have been forgetting to update the documentation with the
last few  changes, so adjust to the oid -> id renaming and add missing
attributes to the listings.
remote: call user-provided callbacks

The user can set 'progress', 'transfer_progress' and 'update_tips' to be
notified whenever one of those happen.
TransferProgress: create this type for transfer progress reporting

This gets passed to the transfer progress callback, instead of the
stripped-down version which Remote.fetch() returns.
Refspec: fix copy-paste error
Add support for pypy

Fortunately pypy provides support for a lot of the CPython API, so the
changes are minimal.

The most important changes are:

- constructors always get a keyword argument dictionary, even if no
  keyword arguments are passed

- trying to assign to a read-only attribute raises TypeError instead of
  AttributeError

Apart from that, pypy does not provide MAXPATHLEN. There is a hack in
place currently, but there is only place that's using that macro, and
there shouldn't be a need for it much longer.

This fixes #209.
Merge remote-tracking branch 'carlos/pypy'
Remove useless constructors

The Reference, Branch, ConfigIter and Walker types were allowed to be created by the
user, but no constructor was set, and the default values are either
meaningless (in the case of Reference/Branch) or would cause a segfault
as soon as one tried to use them (ConfigIter and Walker).

Remove the constructor from these types, as they don't serve a purpose
and can only be used by mistake.