A type can appear as a constituent of another type multiple times.
For example, in 'A<T, T>', 'T' appears as a constituent twice.
When building a type string for 'A<T, T>', this means the type string
of 'T' will appear in the type string of 'A<T, T>' twice.
If such a duplication occurs at every level of a deeply nested type
structure, the length of the type string can become exponential in
the nesting depth.
To avoid this, an optimization is added where, past a length threshold,
type strings refer to constituent types "by reference" rather than
by containing the contents of the constituent type's type string.
Change-Id: Iaea268449a11b598f113a49fc61e9993bb6451da