Move responsibility of providing the instance variable name (this, self) from
TypeSystem to Language.
Language the natural place for this, but also has downstream benefits. Some languages
have multiple TypeSystem implementations (ex Swift), and by placing this logic in the
Language, redundancy is avoided.