Widget review

Mostly little cleanup changes, except for:

- removed multiple-signature dispatch logic from callbacks
- add a few traitlets where there was mixed traitlets / properties / attributes
- switch `_ipython_display_` to catch NotImplementedError from NotImplemented