This will be used to prevent a variable and a function with the same
name from being declared. As a side effect, the calls to
add_{type,name,function} should never fail.
This will allow types and their constructors to be easily stored in
the same symbol table. This does add a potential problem that a
shader could declare a variable and a function with the same name.
This appears to be forbidden by the GLSL spec.