Refactor make_type

This splits out a make_isa and a make_param_isa sub from the make_type sub.  This makes the code much clearer to me.  It includes a bit of change in how the is_Type subs are generated.  Instead of using the base type check, they run the generated isa sub and check for errors.

I lost a few comments and perl critic annotations when moving things around.  I can re-add them if this change is wanted.