Remove detach_icon(): icons are never removed, except at the end

The principle of returning an ID to a module only works if the icons do
not shift around in the icon list. Removing icons on runtime would
destabilise modules, hence we only allow them to be removed at cleanup.

The consequence is that there is no need for a special "detach an icon
from the icon list" function.