Test optional empty model Id value.
Rename HasChanged to IsNewInstance and only set for such case.

IsNewInstance is now set only for when the actual instance of the model
changes. This allows us to trigger change events more often without
spamming the property changed event.
Pass model instead of id to foreign relation change handler.