TR: handle forward references to annotated definitions better

This pull request improves TR's handling of forward references.

In particular, an example like

````
(define (f x) (g 0))
(: g (-> Integer Integer))
(define (g x) (add1 x))
````

requires shuffling the annotation around. This PR makes that unnecessary by adding a pass in-between passes 1 and 2 in the module top-level typechecker.

In addition, this PR adjusts some of TR's error messages to avoid the "untyped identifier" error and also suggests workarounds.