This substitutes one `JetType` for another `JetType`, in a `JetType`. For example, given `Array<Iterable<T>>`, and the substitution `T`/`Iterable<T>`, it produces `Array<T>`.

The existing `TypeSubstitutor` maps `TypeConstructor` to a `TypeProjection`, which I don't think suits my needs.