Added dirty tracking of the object and the ability to 'revert' and 'save'

Let's talk about this and see if this is a satisfactory solution.