Cleanup tc-lambda-unit.

This cleans up how tc-lambda does two things. One is how it handles rest args, now it is parsed into a data structure and read from there instead of either a syntax-list or an improper syntax-list. The second is that opt-lambda specific code is extracted out. Both of these changes will facilitate later bug fixes, correct handling of arities is case-lambda and not doing opt-lambda specific stuff unless actually typechecking an opt-lambda.

I want to get it in before these as I am doing lots of work on tc-lambda-unit.rkt, and the less merging the better.