Allow non-exhaustive CASEs.

GHC generates these if it can prove that the omitted cases are
impossible.  In our case, we stop the VM if such a case is hit (which
would mean a bug in the implementation or GHC).
Fix lcc issue with Rank2 type inside a newtype.

This is only a partial fix. The reason lcc tries to figure out the
usage type of an identifier is to get accurate pointer information.
Of particular interest is the the case where a polymorphic type is
instantiated to a function type.  We could leave all this to GHC by
translating from STG instead of Core.  The big question is whether
this will cause problems elsewhere (due to missing some information).
Add Functor and Monad instance for lists.
Add codegen support for bit shifts.
Add basic support for Word#.
Port integer-simple; needs proper testing