Only update the fields that have actually changed in save.

This is implemented by keeping a cloned reference of the fetched
record. When a save is issued, we do a diff against the original.

This can have a performance impact when the records are very large.
To get around that we could implement a flag to prevent partial
updates for a single model. Or forcing specific columns to be updated
in a more explicit fasion and not keeping a reference of them.

Close #6