Why can a protocol with an associated type or `Self` requirement not be used directly as an existential type in older Swift versions (pre-`any`/pre-SE-0309 generalized existentials), in terms of witness-table mechanics?
protocol Container {
associatedtype Item
func first() -> Item
}
// let c: Container = ... // historically rejected