Remove attr() data dependency

- attr() no longer depends on data
- model.setupData() calls notifyPropertyChange() for provided properties only

Fixes #2450, #2461.

Todo:
- [x] Wrap calls to notifyPropertyChange in beginPropertyChanges/endPropertyChanges