Quite a few changes

I have added some new functionality and also started to update to use the new
cffi (:struct...) type.  

More importantly however, it will now need libgit2 v0.18.  
It turned out that libgit2 v0.18 is NOT backward compatible with 0.17 in quite a few places.  They even managed to reuse the same function name for something else :-)

I am not confident yet that I have caught all the incompatible changes.  So maybe you should wait merging it until I gave it a bit more time to settle.

However, if you have time, could you look over the doc strings and the documentation changes I made.  I am mostly interested in tips on how to format the doc strings etc.  
I feel I am not very consistent and I do not know yet how to approach this so it works optimally with sphinx.

Thanks in advance (sorry it is such a mess at the moment.)

Kind regards,
Wim Oudshoorn.