Fixing issues with types that inherit their AutoFilter implementation

Adding a unit test to demonstrate this problem, and a corresponding fix which involves modification of the TypeUnifierComplexAutoFilter to include the original type.

The root of the problem is that decltype(&T::Foo) might actually evaluate to a member function type incompatible with T.  This occurs when Foo is declared in a base of T, rather than in T itself, and the result is that TypeUnifierComplexAutoFilter will actually create concrete types that completely bypass T.