#24650 Support for inheritance in Hooks

Implements an optional, backwards compatible support for inheritance in
hooks. When new style hooks are used, it is now possible to construct
the following custom hook:

import sgtk
HookBaseClass = sgtk.get_hook_baseclass()
class DerivedHook(HookBaseClass):
    def some_method(self, param):
        data = HookBaseClass.some_method(self, param)
        data.append("derived class stuff")
        return data        

The sgtk.get_hook_baseclass() will return the immediate parent class,
allowing for flexible customization.

This squashed merge closes #59