Some restructuring for ChangeSets

To streamline the workflow, ChangeSet now requires a generic type.
So instead of having multiple tuple versions, multiple changeset versions etc,
now it's only required to have a couple of history versions.