Patch Set 1: Abandoned

Rather than abstracting java.io APIs we are trying to abstract higher level Git specific APIs, like ObjectDatabase and RefDatabase.  This should make it easier to map Git onto non-filesystem storage environments.