inherited class & proper abstract keyword handling

There is a case where FCS says that the Tuple type members Equals/GetHashCode... are abstract but Intellisense doesn't show it as such (they are dispatch slots). So previously I added a check enforcing that the enclosing type should be abstract or an interface.

But if you have a non abstract class with an abstract member + default member, the abstract member is will be considered as a normal instance member because it is not an abstract class nor an interface class.

So, I added another check: ``mem.EnclosingEntity.IsClass && mem.EnclosingEntity.IsFSharp``.

I feel it's kind of incorrect, but do you have any suggestions?
I think `TypedAstPatterns` is a better name. `TypedAstActivePatterns` sounds like its implementation details.