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.