Name cleanup and reorganization of symbol.c
Adding some comments
Adding typeinfo_new_array() and fixing printing of void *arrays
Adding typeinfo_new()

Had to be careful moving the pointer conditions, as pointers aren't
bound to base types but to identifiers, we have to recheck if an
identifier is a pointer on each iteration through a list.
Adding typeinfo_new_function()

Declarations and definitions have the beginning of their list of
parameters in slightly different places.