Correctly handle non-matching patterns against literal values

The pass sys_core_fold did not correctly handle non-matching patterns in code such as:

```erlang
0 = case <<>> of
        <<>> -> 0;
        a -> 1
    end.
```

Function case_opt_lit/3 is rewritten in two passes to first remove any non-matching clause and only then potentially remove the related patterns in each clause.

@UlfNorell