Coverage checker fix

The patterns generated for the 'impossible' cases were not done
correctly in the case of ambiguous zero argument constructors, where it
generated a 'match anything' pattern. This is bad news for things which
use [] because that just became 'match anything'!

Also fixed a couple of definitions which relied on this bug, and added a
comment or two.