This is a good idea. When I get some spare time I'll take a look at the code and come up with a proposal.

For items, weapons, enemies, etc I think it's best to add a very minimal set of callbacks to the existing hard-coded enemies, and then add in a special "scriptable enemy" etc that has a full and large set of callbacks.