Add support for implicit recursive types & mutually recursive types

This pull request adds support for implicitly declared recursive types and mutually recursive types. That is, you can declare a pair of recursive types like:

    (define-type (Even A) (U Null (Pairof A (Odd A))))
    (define-type (Odd A) (Pairof A (Even A)))

Note that no `Rec` is needed.

I'm submitting this as a pull request to get some code review before the initial push. I'd appreciate any comments.