fused types: specialize each base type only once, also for compound type args

This PR removes the cross-product expansion of memoryview fused type args,
and expands permutations only over non-compound fused types.

I also make the corresponding change in cpdef signature resolution. The signatures now contain only the base fused types. The signature lookup determines the signature based on the leftmost types.

The case where more than one fused type is contained in a compound type is not handled
in the signature resolution, raises a compiler error. I don't think that this case can currently
happen, however, as it doesn't seem currently possible to typedef structs containing fused
types.

This is a behavior change, as cross-product specializations are no longer generated for
memoryview arguments.