improve methodswith, fixes #7976

now matches types with the same TypeName if the requested type is abstract.
this seems to do what you want, since asking for `Range` will also
show `Range{Int}` and `Range{<:Real}`, but asking for `Range{Int}` will
only show `Range{Int}`.