let a DataAttribute know it's DataModel and key
allow Bindings to bind to other Bindings instead of directly DataAttributes

Registered as a listener to another Binding, the Binding will update
as soon as the view value changes (as opposed to traditional update on
syncModelToView(), when multiple Bindings share the same
DataAttribute)

To implement this, view value changes have been moved out of
syncModelToView() into setViewValue().  This should also be a good to
build the planned input validation on.