Converted the input_type and codomain_type to use nested typedefs by default; updated function objects to provide this information