Make SupportsCallbacks hold the callback registries

It used to be stored on the instance.  Some care had to be taken to
ensure that we didn't keep references around preventing the
garbage_collector from reaping the instances when they lost all other
references.
Change behavior of class-level callbacks

They now behave as though they were declared on all instances.  They
have separate registries.  The class-level callbacks are called as the
'target' of the instance-level callbacks so the order cannot be made
entirely arbitrary, the order is essentially:

INSTANCE_level_PRE_callbacks
try:
    CLASS_level_PRE_callbacks
    try:
        original_target
    except:
        CLASS_level_EXCEPTION_callbacks
    CLASS_level_POST_callbacks
except:
    INSTANCE_level_EXCEPTION_callbacks
INSTANCE_level_POST_callbacks
Add example for class-level callbacks
Update string formatting on examples