Add Oid type
Return Oid wherever we returned raw oid (bytes) before

Changes:

- Return Oid wherever we returned raw oid (bytes) before
- Now py_str_to_git_oid accepts Oid objects
- Add ability to compare two Oid objects
Fix for Python3, and add Oid cmp tests
oid: support rich comparisons (less than, etc.)
Merge branch 'master' into oid

Conflicts:
	test/test_repository.py
oid: now only accept Oid or hex, not raw

Every method that takes an oid has changed what it accepts.

Before it was (in both Python 2 and 3):

- An Oid object
- An hex oid, represented as a unicode string
- A raw oid, represented as a bytes string

Now the behaviour is different between Python 2 and 3.

Now in Python 2 we take:

- An Oid object
- An hex oid, represented as a bytes or unicode string

Now in Python 3 we take:

- An Oid object
- An hex oid, represented as a unicode string

We have dropt direct support for raw strings. To use a raw string first
build an Oid object: oid = Oid(raw=raw)

We have also dropt support for short raw oids. The Oid constructor takes
full oids, if passed short oids the behavior is undefined.
Make Oid hashable
Fix unit tests with Python 2.6
Fixed crashes in `Repository.create_remote` caused by missing `Py_INCREF()`
refactoring Repository_git_reference_symbolic_create
added basic diff example and fixed misleading doc
Merge remote-tracking branch 'jun/crash-in-create-remote'
Merge remote-tracking branch 'cholin/features/diff_docs'
Merge remote-tracking branch 'cholin/features/refactoring'
Sort list of authors by number of commits

As shown by "git shortlog -sn". So those who have done more are
more visible.
Merge branch 'master' into oid
docs: add a section about the Oid type
Now Note.oid returns an Oid object, not an hex
Now Reference.target returns an Oid, not hex

If the reference is direct, of course.
The repository iterator now returns Oids, not hexs