This returns null if the object doesn't exist in the repository.  This could happen in the case of repository corruption on disk.  We should at least give a better error message than NullPointerException when the object isn't present, like throwing back a MissingObjectException.

In hindsight this is a mess.  The open family on Repository should be throwing that MissingObjectException and never return null.  Every single caller wants the object, or throws.  We really need to fix that in the API, and then fix the callers.  But until then, callers are responsible for checking.  *sigh*