Start implementing bidirectional type checker.

For now, the type checker will just simply return 'yes' or 'no'. Once
it is working, we can worry about filling in the AST and providing more
information about type errors.

When compiling any tests, make sure to use the '-library' flag at the
very end of the command, to avoid adding in extra things that are not
yet handled.