SI-8323 Erase constant types for better double-def checks

Historically, Constant Types in method signatures have not been
erased. Rather, this was done in the backend.

This state of affairs leads to wrong decisions when the erasure
phase makes decisions about whether a pair of methods will clash
in bytecode.

This commit changes `ErasureMap` to take the underlying type of a
constant type.

This change obviates the fix for SI-4753, dcc07bd9f.

I've added test to show that constants are still inlined.

I believe this will answer the question in the backend about why
existential types make it that far; they come from the underlying
of a constant type representing a class literal. I'll leave it to
@lrytz to verify that the code in question is now dead and to remove
it in his backend work.

I know of one binary incompatibility as a consequence of this change.