replace the typechecking monad with one based on the monad transformers, clean up the code somewhat
replace the typechecking monad with one based on the monad transformers, clean up the code somewhat

darcs-hash:20051206082852-1a7c6-e7781c6463fa71471c09201783ac08c8fd0c4239

kirbyfan64/jhc,kirbyfan64/jhc,kirbyfan64/jhc,kirbyfan64/jhc