AbstractObject is the base class for the classes Blob, Commit, Tag and Tree. It proviedes test methods
to identify its specialized type (i.e. IsBlob, IsCommit, etc). AbstractObject also defines comparison operators so you can
safely compare git objects by using the operators == or != which internally efficiently compare the objects hashes.