Made the Attribute change event bypass for no listeners a little less hacky

Instead of creating a psuedo facade and invoking `_defAttrChangeFn`,
we now call `_setAttrVal` directly, mirroring what we do for the initial set (when
there's no event fired).

As a result we needed to change was the Model `_defAttrChangeFn` override which it
does to capture the coalesced changes during a `setAttrs` transaction. Changed it to
override `_setAttrVal` instead. Note, both these methods are currently private.

All library unit test pass.