Separate Viewer and Editor extension function in Tags plugin

- Has a common wrapper called createTagsPlugin
- All other functions are private
- Viewer and Editor extension functionality do not share the same scope
- But they receive the same options