explicitly defined TreeEntry.toString
converted LooseBlob and LooseTree to case classes, for convenience
corrected FileMode.Tree.toString