Implement Iterator protocol on Repository

Uses a stupid implementation that builds a list in memory and returns
it's iterator.
Ensure that odb is always freed
Handle errors while building the list gracefully
Don't leave dangling references to oid strings
Always decref the new string. Don't set err.