[ty] Represent protocol applications as recursive type constructors
Store protocol declarations and type arguments without expanding member signatures. Unfold the structural interface for type relations, while runtime member lookup and metadata queries use the declaration directly. Preserve materialization polarity across specialized members and constructor arguments.