Function_table now uses polymorph_ptrs

(instead of using raw polymorphs. Should result in smaller
function_table structures and cleaner, less unsafe code)
Function names are now stored in function struct (as lexids)
Completely eliminated global function table

Later passes now also have their own specialized return types.
Added initial definition of a name table

"Name tables" will now replace every ad-hoc reference to backsymtables,
and will have a better-defined interface.
Made lexer use a name table
Changed all references to backsymtable to "names"