* `hookable` decorator replaces the class being decorated with one that extends `Hookable` that has `HookableMeta` set as `metaclass` so that we control creation of sub-classes
* `Handler.hook_name`
* `Hook.defining_class`
* Allow hooks to be overwritten in sub-classes and lose any connection with parent class hooks
* Allow registering handlers using parent class's hook as a decorator