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'
Adjust to libgit2 dup changes
Adjust to reference creation signatures
Blame: orig_ is now filled
Adjust to the git_buf changes

We no longer need the max-path define, so we can get rid of that and the
pypy checking.
Adjust to oid -> id renaming