knob: add attributeChanged method and cancel event

/cc @morethanreal @ebidel

Without this you can't instanciate the knob with an the initial `value` bound to an arbitrary expression (because the element `ready()` callback will get fired before the `value` attribute is bound).

Thanks @morethanreal for finding that out.