Changed the semantic's constructor environments.

Previously, the operational semantics kept an environment that mapped
each constructor to all of the other constructors of the same type.
This allowed pmatch to determine whether the construcor value matched
against a constructor pattern were of the same type (relying on the fact
that there were no duplicate constructor definitions).  Now, the map
just stores the type that the constructor comes from and pmatch can do
the check directly.