Changed representations to use Maps.
Set -Werror
Updated to reflect changes in representation of Core
Reworked product and sum types to use Map's to store their argument and
element types, and introduced a binding order, which defines the order
in which values should be substituted into the types.