a few updates
Restructure the type hierarchy code for the long term

Separate out the type graph traversals from the AST generating and
manipulating code transforms so that it can be refined, developed and
ultimately packaged with the rest of the compiler namespace.
add some fdecl comments