Only send object callbacks if there is an external reference to the object

Callbacks for objects include the object ID, but no extra external
reference is added before sending, because nobody might handle the
callback resulting in a reference leak.

This means the user cannot "learn" about an object from a callback that
she didn't already know, because there is no way to get an external
reference from the object ID parameter of a callback. By the time the
callback is delivered the object might already be destroyed.

Therefore, object related callbacks are only send for objects that have
an external reference, so the user has a chance to already know about
the objects.
Simplify some logging constructs