Update diff() to include old/new values and fix swapped reverse logic

Previously, the code within the reverse if block contained the new
value(that is the diff between the revision and the instance) instead of
the old value(the diff between the instance and the revision). This has
been fixed in this commit. Also included is a test for the changes
property on a revision.
Set new_value key in changes when creating a revision

When creating a new revision, only the new_value key is set because
there are no old values to include.