Fix access after free

The key to this fix are the changes in CallbackHandler.cpp. The rest are things I did along the way that (I think) make sense to keep.

There was a "use after free." The callback execution resulted in the deletion of the object the callback was on but there were references to that callback still being used in the callback handler (for example, the CriticalSection that's part of every AddonCall instance).

Personally I think this fix is pretty critical.