De-duplicate code in Widgets

Reduce UI code duplication by making Widget inherit Delegator and
making better use of inheritance for subclasses, unifying functionality
for hide and show.
Align Delegator with Backbone.View

Take an opportunity to align our idioms where we have existing patterns
that are very similar to Backbone and to move away from the
`Annotator.Plugin` pattern with new UI components.

- Invert the order of text in Delegator event hash keys to match the
  call signature of jQuery's `.on()` instead of `.delegate()` and
  the way the feaure works in `Backbone.View`. `Annotator.Plugin` is
  changed to preserve bw compatibility, since it already handles compat
  and deprecation warnings for non-DOM events.
- Use `this.el` and cached `this.$el` instead of `this.element`. The
  latter is preserved for bw compatibility. Add `this.$` as an alias
  to `this.$.bind(this.$el)`.