Prototype diff API.
Fixed some compile errors.
Fixed up diff API into a working condition.

Migrated some of the git object API onto the git-pointer object.
Dispersed types, and folded classes into cffi types

This is an attempt to reduce the unnecessary types.
Removed guess work from to foreign conversion.
Added translation to string list
For type conversions make sure that the correct type is being passed
Updated diff code, added initial test
Moved getenv function into file which uses it
Updated some doc strings