Most of the problems with deleting a package instance wouldn't exist if there would have been proper usage of ON DELETE CASCADE from the beginning. I mean - why on earth should for example deletion of an object cause an error just because it has direct permissions associated with it?
In my understanding it was agreed that this situation should be improved on the way to 4.7 by adding on delete cascade where appropriate. I wouldn't find it productive to have a magic tcl proc mimicing this functionality. (Which doesn't mean that there is no use for such a proc, but it should definitely not handle things like deleting direct permissions).