fix(models): Use `angular.equals()` when calculating diff

Previously, all sub-objects were counted as different, even if they hadn't
really changed.