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

 
seems like we should use forEach here instead of map so we don't allocate an array. nobody is using the return value here it seems.