SI-7159 Distinguish between assignability and subtyping in TypeKinds

GenICode#adapt had some unreachable code. That's removed.

Another commit cleans up several spots in the back end related to adapting types.

TypeKinds said INT <:< LONG. But that's not true on the JVM, you need
a coercion to move up. And GenICode#adapt was checking for just that
special case. One commit fixes that up.

TypeKinds also said that BOOL, BYTE, CHAR, and SHORT were also subtypes of INT. That's not quite right. They're assignable to INT, but they aren't subtypes. Another commit fixes that.