added case handling for literals.

We still have a splitting bug though

Incorrect core:

```
>> :c let { z Nothing 2 = 3; z (Just a) 3 = a } in z
let { a = \{b,c} -> case c of d
    { <0|1|Literal| e> -> case# e of
        { Int 2 -> 3
        ; Int 3 -> case b of f
            { <1|0|Just| g> -> g
            ; _ -> error "non-exhaustive pattern match."
            }
        ; _ -> error "non-exhaustive pattern match."
        }
    }
  } in a
```