Return the same index and odb objects in successive calls

Instead of creating a new Go object each time Repository.Index()/Odb()
are called, return the same one as long as the underlying pointer
remains the same.