InheritedProtocolConformance: Return the conforming type's DeclContext
Not the superclass's. This can cause mapping types out of context to not
resolve archetypes, because the DeclContexts won't match, e.g:
internal class _IteratorBox<Base: IteratorProtocol> :
_AnyIteratorBoxBase<Base.Element> { internal override func next() ->
Base.Element? }
Here, _IteratorBox's associated type Element for IteratorProtocol is
Base.Element, but the conformance comes from the superclass,
_AnyIteratorBoxBase. This meant that Base.Element couldn't be mapped to
an interface type, which should be:
(dependent-member
(generic-type-parameter depth=0 index=0) member=Element)
The old behavior also broke inherited conformances across serialization boundaries, because subclasses would fail to inherit conformances a deserialized class inherited itself from a base class (SR-1158).