Set now checks if the set value is different than the original value before setting isDirty

Also fixed a bug where unsetting something didn't create originalData as part of this fix
Merge pull request #2 from jimbojsb/isdirtybug

Set now checks if the set value is different than the original value before setting isDirty