ddc-core: split overlapping alts and exhaustiveness check from case checker
ddc-core: split out code that gets the type of a pattern