[dev.typeparams] cmd/compile/internal/types2: review of typexpr.go
[dev.typeparams] cmd/compile/internal/types2: review of typexpr.go

This code matches go/types/typexpr but for the necessary adjustments
because of the use of package syntax rather than go/ast, and for the
code being part of cmd/compile/internal/types2 rather than go/types.

Primary differences to go.types/typexpr.go:
- syntax.FuncType doesn't carry type parameters
- type instantiations are represented using syntax.IndexExpr
  nodes
- there's an explicit syntax.SliceType
- *x is expressed as a unary operation, not a StarExpr
- grouped fields are identified by identical pointer types

To see the changes copied from recent go/types changes, compare Patchsets 1 and 2.

Change-Id: I8aa9452882d1f5e9529c52a30c7c8e65f3fcbb43
Reviewed-on: https://go-review.googlesource.com/c/go/+/281545
Trust: Robert Griesemer <a6752097faebf1f02d80107d77a9be009089afe3@golang.org>
Run-TryBot: Robert Griesemer <a6752097faebf1f02d80107d77a9be009089afe3@golang.org>
TryBot-Result: Go Bot <66cb808b70d30c07676d5e946fee83fd561249e5@golang.org>
Reviewed-by: Robert Findley <9179eee875d1ee628c37fb47d7e749e855ffd21f@google.com>

nawawi/go,cloudflare/go,CAFxX/go,nawawi/go,cloudflare/go,golang/go,nawawi/go,nawawi/go,nawawi/go,nawawi/go,golang/go,CAFxX/go,CAFxX/go,cloudflare/go,cloudflare/go,golang/go,golang/go,cloudflare/go,cloudflare/go,CAFxX/go,golang/go,CAFxX/go,CAFxX/go,CAFxX/go,golang/go,cloudflare/go,cloudflare/go,golang/go,nawawi/go,golang/go,nawawi/go,CAFxX/go