Get ready to release 0.20.3
Start implementing remotes with CFFI

This moves enough code into python with CFFI to pass the test_remotes
unit tests. There is no credentials support yet.

There is a small change in the return value of Remote.fetch() in that we
now return a TransferProgress object instead of extracting a few values
into a dictionary.
Remote: support credentials via CFFI
Remote: add support for transfer and update_tips though CFFI
Remote: add documentation strings

Now that it has the features of the old implementation, let's add
documentation on how to use it.
Remote: get rid of the C code

This code has been obsoleted by the CFFI-using code. Some credentials
code remains in C due to the clone functionality making use of it.
Implement clone via CFFI as well

This lets us get rid of the last piece of C for anything related to
remotes and credentials.
Some python3 fixes
Install the "decl.h" file
Remote: make sure to take the contents of the id

Pass the contents of the buffer containing the git_oid to bytes() so
build a raw representation of its contents. Using bytes(ffi.buffer(...))
returns the representation of the buffer.
Depend on the cffi package

Let both pip and Travis know what we need.
Fix installation-time cffi compilation

The documentation recommends adding the ffi code as an extension so it
gets built at the right time.

Make use of the LIBGIT2 environment variable to build and link the ffi
module the same way the C extension does so the user doesn't have to
export CFLAGS.
Don't cast a pointer to a number

Casting a pointer to a non-pointer type is something which you should
never do. Instead, do something a bit more convoluted, but which is
guaranteed to give us the right pointer, as well as making sure that the
memory we exchange between python/cffi and the C extension is of the
right pointer size.