Currently `TypeKind` in Wasm includes values that aren't really types, such as `Rec` and `Sub`. This was done as function type definitions `Func` were already represented this way. As more type definitions are added, this becomes unwieldly for any code that needs to case-dispatch over type kinds. It might be a good idea to separate this out into its own enumeration, such as `DefinedTypeKind` or similar.
<rdar://problem/115937741>