proposed solution for issue #233

Due to model structure ( no List properties, only database properties), sometimes a model is modified but this modification is not "captured" by their properties: the more clear sample is TimeEntryModel / Tags, in a common sense the Tags belong to TimeEntryModels but there is not a List<TagModel> property.

I have added an utility function ( SetTimeEntryAsDirty) to supply the functionality of mark a model as dirty although the properties has been not changed.
I'd prefer if it was in the Model base class and to keep the Data object immutable (by using MutateData function to replace the data object without mutating the old one):
```
public void Touch() {
    MutateData(delegate {});
}
```