Desugar cases after type-checking.

Note that this commit breaks cases (which didn't work entirely correctly
anyways).