This method (having the voxel nodes notify all registered parties when one is deleted) seems like it might not work with multiple VoxelSystems (which there are, since the avatar voxels are VoxelSystems).  I think you need a way to notify only the owning VoxelSystem, perhaps by sending the notify callback/data (better yet, use an interface with a virtual function, perhaps operator()) down with the delete operation from VoxelTree.