[dart2js] Handle nested type variables in type literals
[dart2js] Handle nested type variables in type literals

dart2js previously assumed that type variables could only occur
at the root of type literals. With the constructo tear offs feature
type literals like `C<T>` are allowed, requiring a check for nested
type variables to determine whether a type literal can be encoded
as a constant.

Fixes the crashes in

  language/type_object/explicit_instantiated_type_literal_test
  language/typedef/aliased_type_literal_instantiation_test

Change-Id: I0fbd2f9ea3a96ab6db70f98b8d8af1b24c950070
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/211902
Commit-Queue: Stephen Adams <60cb5b73b7e0cb7dcda53302da4fab6ecfc7fa8b@google.com>
Reviewed-by: Stephen Adams <60cb5b73b7e0cb7dcda53302da4fab6ecfc7fa8b@google.com>

dart-lang/sdk,dart-lang/sdk,dart-lang/sdk,dart-lang/sdk,dart-lang/sdk,dart-lang/sdk,dart-lang/sdk,dart-lang/sdk