Rework Tags plugin

This PR reworks the Tags plugin and introduces the Widget extensions concept.
- Widget extensions are functions that can be added to a widget as options.extensions (expects a list)
- These functions are run on the widget at rendering.
- This is a hook point to customize widgets, add necessarily new fields, etc.

The Tags plugin:
- Converted from coffee to js.
- It is no longer a plugin but an UI extension, so moved from plugins directory, to ui directory
- The filtering part is gone, since we have a separate plugin for that
- Offers two widget extensions: `configureViewer` and `configureEditor`

I'm not sure what you mean. When the constructor is called `this` is an instance of `Editor` or `Viewer`, so it does have an `addField` method. See for example [here](https://github.com/openannotation/annotator/blob/c43370686f22c6165c58d2dac763defb6187e236/src/ui/editor.js#L233) where `addField` is called in the `Editor` constructor.