fix typedef thinko

Remove the API for creating types corresponding to typedefs.
There is no reason to do this as the C parser only looks
at typedefs as symbols -- they have no real existence
as types per se.
remove tag names from the API

Remove tag names from the API.
These are only needed when converting symbol bindings.
pass element type to build_array_type

build_array_type didn't have a parameter for the element type,
which it obviously needs.
change how function types are created

This changes function types to be created in a way more in line with
gcc's internal API.  This means we can't create self-referential
function types, but those aren't possible in C anyhow.