Add pretty printing for Typed Racket types

This PR adds pretty printing for TR types.

Pretty printing is enabled by rewriting the printer to emit s-expressions as an intermediate format and then pretty printing the s-expression. IMHO, this also makes the code easier to understand than the old side-effecting style and also makes it easier to implement alternative printing styles.

A few printing behaviors that I think are bugs have been changed too. For example, the singleton type for the character `#\a` is currently printed by TR as `a`. I changed this to print as `#\a`.