Versionable is a marker interface used to annotate an artifact snapshot type
 that may become versioned. For artifacts of this type, their lifecycle works
 as follows:
 
 - Upon creation, the artifact is represented as a single Versionable
 artifact.
 
 - When a user first checks the artifact out, two new artifacts are created:
 a Version to store the version's metadata, and a Versionable to store the
 data snapshot of the working copy. The original Versionable artifact
 continues to exist and is now known as the family.
 
 - To edit the working copy, users should perform updates on the working
 copy Versionable, not the family Versionable.
 
 - After the artifact is checked in, the working copy Versionable can no
 longer be updated. However, the Version that had been associated with the
 working copy may continue to be updated.
 
 - When loading snapshot attributes from the family Versionable, attribute
 data is populated from the most recent version snapshot as seen by the
 calling actor. Actors cannot see changes to the working copy currently being
 made by other actors.