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?
Now that I think about this again, the following fragment:

```fsharp
mem.LogicalEnclosingEntity.TryGetFullName()
|> Option.getOrElse "tmp.fsi"
``` 
would be enough.

`TryGetFullName` also attempts to use `DisplayName` in one of its branch. Sorry for misleading comments before.