Oid cleanups

Python has built-in functions for getting strings out of objects, so let's make use of that instead of implementing our own attribute for it. While there, use the same function for `repr()` which makes for nicer playing around in the interactive console.

I tried using the `__bytes__()` built-in for the raw bytes as well, but there we hit a snag on python2 vs python3, where `bytes()` does something completely different. I wonder if we making `Oid` an iterable would solve this. I've left it out for now.

The second commit makes the way to access an object's id be `.id` instead of `.oid`. This was following a legacy convention in libgit2, and we now should only use "oid" when referring to the data type, and "id" for the object's attribute. This has shown a couple of places we missed in libgit2 (namely `IndexEntry` and `Note`) and I'll be sending a patch there.