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. (And also fixes a signature resolution bug, triggered by the second test case added.)

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. However, as discussed on the list, I believe the cross-product expansion is not the correct thing to do, as it creates ambiguities on the meaning of the expanded fused types in the function body.