Add t-record and supporting functions.

In preparation for handling data types, I have added t-record and
functions to help with handling TypeMembers.
Add map-checking function to match map2-checking.
t-bot arguments should be visited by type checker.
Add CompileError for objects missing fields.
Support data types, desugared cases, and objects.

Data types are now supported. For the moment, methods and lambdas are
not type checked until we can figure out how we want certain parts of
them to behave. Cases also work, since they are desugared into function
calls for the moment. Objects are now supported.