Add `HasTraits.on_change` as a simplified API for handler registration

This closes #5030

There are two things that this does:

* Adds `HasTraits.on_change(name, handler(value))`.
* Adds checks to make sure dynamic handlers are callable, when they are registered, rather than called.