Address pattern matcher exhaustiveness warning

By placing the sealed descendents in a module, rather
than in a trait.

This won't be binary compatible.
Merge pull request #480 from retronym/topic/imm-array

Address pattern matcher exhaustiveness warning