eturn types and parameters.

The return type is now specified by a second Type object so that we
can handle arbitrary combinations. Parameters work again, the tree
had been restructured since last time.

Every test declaration apart from two really nasty function pointers
now seems to work. The nasty cases involve returning a function
pointer from a function being pointed to, and parameters that are
function pointers.