Introduce Any<P> as a better way of writing existentials

This is correct; @objc protocols can have inits and class methods, and Self in return type position only. None of these stop a protocol from being used as an existential, or an @objc protocol from self-conforming.

(The limitation on Self corresponds to instancetype being return-type-only in Objective-C; using Self as a parameter or var type in an @objc protocol declared in C causes a because its type cannot be represented in Objective-C error.)