Use mixin classes to declare hooks in plugins

As per Matti's suggestion from #35, HookPlugins now declare which hooks they implement by inheriting from one of the available mixin classes in the `plugin` module.