string destructor( object ob )

This function is called every time an object is destructed. It is important
that this object NOT have any crasher bugs, or your object will be
indestructible! (almost, see below).

The object ob is the one that made the call to destruct(). You can use this
to decide if they have the 'right' to destruct your object. If destruction
is allowed, you should return 0. If it's not allowed, return a string, and
that string will be used as an error message.

Components are allowed to have their own destructors; just call them
_destructor_componentname(). They work the same way as normal destructors.
If you write your own destructor, be sure to call the default ::destructor()
in object, so that the component destructors will get handled.

If you have an object that refuses to disappear when destructed (because the
destructor() has an error which crashes things when you call it), you need to
call /secure/master->add_nukable, passing it a pointer to the object. All
subsequent attempts to destruct the object will do so without attempting to
call its destructor.
