Added typed first order representation.
Split Repa.hs into Core.hs, HOAS.hs and FOAS.hs
Added type checker for FOAS.
Changed type inference, added type-annotated first-order representation.

Type inference now uses mutable variables instead of substitutions for
type variables.
Also added function to generate type-annotated representation from the
unannotated representation, and a function to type-check it.
Type annotation on FromInteger, arbitrary size tuples in core language.

Added type annotation on FromInteger in all representations. Added
Storable class to support this for HOAS representation. Also some other
changes to HOAS representation.

Arbitrary size tuples in HOAS and FOAS representations, but not fully
implemented