Descriptor now uses the actual class type of &T::AutoFilter

Because T::AutoFilter might actually be present in a _base type_ of T, it's important that AnySharedPointer be instantiated with a to the base type where the AutoFilter is actually defined.  In order to obtain this name, we decompose this member function, and then take the type of the decomposed result.

An additional benefit of this change is that the AutoFilter type unifier is no longer necessary because the AnySharedPointer passed into the CallExtractor is guaranteed to already be instantiated with the correct type.