Introduce libgit2 options

Allow setting and getting the mwindow size and search paths.
Create proxy object for libgit2 options

pygit2.settings proxies though the lower-level varargs option() via
getters and setters which provide a more natural abstraction.
settings: python 3.3 compat

Python 3.3 doesn't like us overriding properties in __slots__, so set it
to an empty list.
Settings: add documentation

The search_path attribute is now inside __init__() so it shows properly
in the generated documentation.
More informative repr for Repository objects
Introduce credentials
Repository: don't jump to cleanup unecessarily

Until we have successfully borrowed the message, we have not used up any
resources, we can skip jumping to 'out' and we can return NULL
directly. This also avoid dereferencing an uninitialised 'tmessage'.
Remote: add documentation for credentials
Update clone_repository's docs

It claims you need to checkout a branch after clone, which is not the
case currently (the clone function will do it for you).

While here, format the docstring for sphinx to make it pretty.
Add credentials support to clone_repository()
Merge remote-tracking branch 'carlos/uninitialsed'
credentials: memory safety

The docs say to use tp_free() to free the memory, and even though we use
PyObject_Del() everywhere else, using this in the credentials does cause
issues.
credentials: use more ducks

Instead of making everyone inherit from our credential types, use an
interface with two attributes, which makes the C code much shorter and
simpler.
Make dealloc use tp_free or don't allow inheritance

When a class is a base type, it must use its type's tp_free function to
trigger the real free, instead of PyObjec_Del().

We do not always follow this convention, so let's give it a once-over
and make sure we do that or that it's not a base type. Many of the types
have the flag set in the struct, but do not pass the allocator function
at init time, which makes them not really be a base. Remove the flag for
those types.
Plug memory leaks

This patch is mostly about making sure that we free the copies of what
we have, as well as making sure that we can free it.

The IndexEntry forgot to free its path, but it also used a pointer to
python-owned memory, which could be freed at any time.

MergeResult completely lacked a deallocator.

Signature needs to make sure we can free the enocoding, and not to set
an owner when we own the memory (in this case for the default
signature).

The repository needs to get rid of its reference to the object list when
returning.

The transfer progress callback needs to decref the stats object.
Merge remote-tracking branch 'carlos/leaks'
Merge remote-tracking branch 'carlos/credentials'
Always use new-style classes in Python 2
Writing changelog for v0.20.3
Adjust to libgit2 dup changes