Add tracking of Publish, Unpublish and Delete

Currently the publish and unpublish changes store the entire data object in the after or before fields respectively this could be improved some what but it gives good visibility of changes in the current state.