A blob is a data container.
Commits are a pointer to a 'head' tree with some metadata.
Tree nodes are either trees or blobs, represented by this sealed class.
Represents an arbitrary version manager object.
A tree is a set of named nodes.